1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| from sklearn.datasets import load_iris
iris = load_iris()
# 前两列数据(花萼长度与宽度)进行回归分类 X = iris.data[:, :2] Y = iris.target
# 分割数据集: from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, Y, random_state=66, test_size=0.2)
# 导入模型, 调佣逻辑回归函数LogisticRegrssion()函数 from sklearn.linear_model import LogisticRegression
# 训练模型 lr = LogisticRegression(penalty="l2", solver='newton-cg', multi_class='multinomial') lr.fit(x_train, y_train) # 关于模型的参数: # penalty:正则化选择参数,默认方式为 L2 正则化 # solver:优化算法选择参数,有{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}四种参数,如果你是用的是 L1 正则化,则只能使用 libinear,这是因为 L1 正则化并不是一个连续可导的损失函数。 # muti_class:分类方式选择参数,包括{‘ovr’, ‘multinomial’}两种参数。简单来说,OvR 相对简单,但分类效果相对略差(这里指大多数样本分布情况,某些样本分布下 OvR 可能更好)。而 MvM 分类相对精确,但是分类速度没有 OvR 快。
# 预测数据 y_pre = lr.predict(x_test)
# 准确率的评估 print("逻辑回归训练集数据的准确率为\n", lr.score(x_train, y_train)) print("逻辑回归测试集数据的准确率为\n", lr.score(x_test, y_test)) from sklearn import metrics accuracy = metrics.accuracy_score(y_pre, y_test) print('逻辑回归模型准确率:%.3f'% accuracy)
|