鱼C论坛

 找回密码
 立即注册
查看: 1264|回复: 2

[已解决]人工智能中关于逻辑回归问题

[复制链接]
发表于 2023-10-14 16:15:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1、基于Sklearn机器学习工具或自编码实现经典逻辑回归(无正则化)、带有L1正则化和L2正则化的逻辑回归方法;并通过调整学习参数,比较其对分类精度的影响。
2、数据集:Iris数据集(选择两个特征,自己划分训练集和测试集);
3、编程语言:Python
最佳答案
2023-10-14 16:17:28
1、基于Sklearn机器学习工具或自编码实现经典逻辑回归(无正则化)、带有L1正则化和L2正则化的逻辑回归方法;并通过调整学习参数,比较其对分类精度的影响。



经典逻辑回归(无正则化)的实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='none', solver='lbfgs', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



带有L1正则化的逻辑回归方法实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='l1', solver='saga', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



带有L2正则化的逻辑回归方法实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='l2', solver='lbfgs', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



通过调整学习参数,比较其对分类精度的影响:

可以通过调整学习率、正则化系数等参数来影响分类精度。例如,可以使用GridSearchCV来搜索最优的参数组合:

  1. from sklearn.model_selection import GridSearchCV



  2. # 定义参数范围

  3. param_grid = {'penalty': ['none', 'l1', 'l2'],

  4.               'C': [0.001, 0.01, 0.1, 1, 10, 100],

  5.               'solver': ['lbfgs', 'saga']}



  6. # 构建逻辑回归模型

  7. lr = LogisticRegression(max_iter=1000)



  8. # 使用GridSearchCV搜索最优参数

  9. grid_search = GridSearchCV(estimator=lr, param_grid=param_grid, cv=5, n_jobs=-1)

  10. grid_search.fit(X_train, y_train)



  11. # 输出最优参数和准确率

  12. print("Best parameters:", grid_search.best_params_)

  13. print("Accuracy:", grid_search.best_score_)

复制代码



2、数据集:Iris数据集(选择两个特征,自己划分训练集和测试集);



加载数据集并选择两个特征:

  1. from sklearn.datasets import load_iris

  2. from sklearn.model_selection import train_test_split



  3. # 加载数据集

  4. iris = load_iris()

  5. X = iris.data[:, :2]

  6. y = iris.target



  7. # 划分数据集

  8. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

复制代码



自己划分训练集和测试集,可以使用train_test_split函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-10-14 16:17:24 | 显示全部楼层
1. 实现经典逻辑回归(无正则化)、带有L1正则化和L2正则化的逻辑回归方法

以下是使用Scikit-learn库实现经典逻辑回归、L1正则化逻辑回归和L2正则化逻辑回归的示例代码:
  1. from sklearn.datasets import load_iris
  2. from sklearn.linear_model import LogisticRegression
  3. from sklearn.model_selection import train_test_split
  4. from sklearn.metrics import accuracy_score
  5. # 加载数据集
  6. iris = load_iris()
  7. X = iris.data[:, :2]  # 选择前两个特征
  8. y = iris.target
  9. # 划分训练集和测试集
  10. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  11. # 经典逻辑回归
  12. clf_lr = LogisticRegression(penalty='none', solver='saga')
  13. clf_lr.fit(X_train, y_train)
  14. # L1正则化逻辑回归
  15. clf_lr_l1 = LogisticRegression(penalty='l1', solver='liblinear')
  16. clf_lr_l1.fit(X_train, y_train)
  17. # L2正则化逻辑回归
  18. clf_lr_l2 = LogisticRegression(penalty='l2', solver='liblinear')
  19. clf_lr_l2.fit(X_train, y_train)
  20. # 在测试集上进行预测
  21. y_pred_lr = clf_lr.predict(X_test)
  22. y_pred_lr_l1 = clf_lr_l1.predict(X_test)
  23. y_pred_lr_l2 = clf_lr_l2.predict(X_test)
  24. # 计算分类精度
  25. accuracy_lr = accuracy_score(y_test, y_pred_lr)
  26. accuracy_lr_l1 = accuracy_score(y_test, y_pred_lr_l1)
  27. accuracy_lr_l2 = accuracy_score(y_test, y_pred_lr_l2)
  28. print("经典逻辑回归的分类精度:", accuracy_lr)
  29. print("L1正则化逻辑回归的分类精度:", accuracy_lr_l1)
  30. print("L2正则化逻辑回归的分类精度:", accuracy_lr_l2)
复制代码

在上述代码中,首先加载Iris数据集,并选择前两个特征作为输入数据。然后,使用train_test_split函数将数据集划分为训练集和测试集。接下来,分别创建了经典逻辑回归、L1正则化逻辑回归和L2正则化逻辑回归的分类器,并使用训练集进行拟合。最后,利用测试集对模型进行预测,并计算分类精度。

2. 数据集:Iris数据集(选择两个特征,自己划分训练集和测试集)

上述示例代码已经包含了对Iris数据集的处理,选择了其中的前两个特征作为输入数据。通过使用train_test_split函数,将数据集划分为训练集和测试集。你可以根据需要调整test_size参数来设置测试集的比例。

希望以上代码和说明对你有帮助!如果有任何问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-14 16:17:28 | 显示全部楼层    本楼为最佳答案   
1、基于Sklearn机器学习工具或自编码实现经典逻辑回归(无正则化)、带有L1正则化和L2正则化的逻辑回归方法;并通过调整学习参数,比较其对分类精度的影响。



经典逻辑回归(无正则化)的实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='none', solver='lbfgs', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



带有L1正则化的逻辑回归方法实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='l1', solver='saga', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



带有L2正则化的逻辑回归方法实现:

  1. from sklearn.linear_model import LogisticRegression

  2. from sklearn.datasets import load_iris

  3. from sklearn.model_selection import train_test_split



  4. # 加载数据集

  5. iris = load_iris()

  6. X = iris.data[:, :2]

  7. y = iris.target



  8. # 划分数据集

  9. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)



  10. # 构建逻辑回归模型

  11. lr = LogisticRegression(penalty='l2', solver='lbfgs', max_iter=1000)



  12. # 训练模型

  13. lr.fit(X_train, y_train)



  14. # 预测测试集

  15. y_pred = lr.predict(X_test)



  16. # 计算准确率

  17. accuracy = lr.score(X_test, y_test)

  18. print("Accuracy:", accuracy)

复制代码



通过调整学习参数,比较其对分类精度的影响:

可以通过调整学习率、正则化系数等参数来影响分类精度。例如,可以使用GridSearchCV来搜索最优的参数组合:

  1. from sklearn.model_selection import GridSearchCV



  2. # 定义参数范围

  3. param_grid = {'penalty': ['none', 'l1', 'l2'],

  4.               'C': [0.001, 0.01, 0.1, 1, 10, 100],

  5.               'solver': ['lbfgs', 'saga']}



  6. # 构建逻辑回归模型

  7. lr = LogisticRegression(max_iter=1000)



  8. # 使用GridSearchCV搜索最优参数

  9. grid_search = GridSearchCV(estimator=lr, param_grid=param_grid, cv=5, n_jobs=-1)

  10. grid_search.fit(X_train, y_train)



  11. # 输出最优参数和准确率

  12. print("Best parameters:", grid_search.best_params_)

  13. print("Accuracy:", grid_search.best_score_)

复制代码



2、数据集:Iris数据集(选择两个特征,自己划分训练集和测试集);



加载数据集并选择两个特征:

  1. from sklearn.datasets import load_iris

  2. from sklearn.model_selection import train_test_split



  3. # 加载数据集

  4. iris = load_iris()

  5. X = iris.data[:, :2]

  6. y = iris.target



  7. # 划分数据集

  8. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

复制代码



自己划分训练集和测试集,可以使用train_test_split函数。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 00:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表