鱼C论坛

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

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

[复制链接]
发表于 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-10-31 04:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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