第L3周:机器学习|逻辑回归 LogisticRegression学习记录 - 教程
第L3周:机器学习|逻辑回归 LogisticRegression
- 本文为365天深度学习训练营 中的学习记录博客
- 原作者:K同学啊
实例:鸢尾花分类预测
1.数据预处理
1.1导入库
import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
1.2导入数据
# 2. 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data # 特征矩阵
y = iris.target # 目标变量
1.3数据预处理:特征标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
#标准化目的是将数据缩放到一个均值为 0,标准差为 1 的正态分布,除不同特征量纲的影响
1.4划分训练集和测试集
# 划分训练集和测试集(80% 训练集,20% 测试集)
X_train, X_test, y_train, y_test = train_test_split(X_scaled,
y,
test_size=0.2,
random_state=42)
#random_state=42,42没有特殊含义,可以换成其他数字,它相当于一个种子参数,使得每次划分数据的结果一致。
2.逻辑回归模型
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(max_iter=200) # max_iter 是迭代次数,默认为100,这里设为200以保证收敛
model.fit(X_train, y_train)
3.预测结果
y_pred = model.predict(X_test)
y_pred
array([1, 0, 2, 1, 1, 0, 1, 2, 1, 1, 2, 0, 0, 0, 0, 1, 2, 1, 1, 2, 0, 2,
0, 2, 2, 2, 2, 2, 0, 0])
y_pred是一个numpy.ndarray类型的一维数组结构,y_test为Series类型的一维序列结构,用list()函数将它们都转换为列表,再将它们集成到一个DataFrame中
a = pd.DataFrame()
a['预测值'] = list(y_pred)
a['实际值'] = list(y_test)
a.head(5)
| 预测值 | 实际值 | |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 2 | 2 | 2 |
| 3 | 1 | 1 |
| 4 | 1 | 1 |
y_pred_proba = model.predict_proba(X_test)
#逻辑回归模型的本质是预测概率,获得概率值
y_pred_proba[:5]
array([[1.14669452e-02, 8.74321579e-01, 1.14211476e-01],
[9.65206764e-01, 3.47928123e-02, 4.23970323e-07],
[3.92881759e-08, 2.95067657e-03, 9.97049284e-01],
[1.34816894e-02, 7.58378005e-01, 2.28140306e-01],
[1.88093222e-03, 7.49634598e-01, 2.48484470e-01]])
4.评估预测结果
accuracy = accuracy_score(y_test, y_pred)
#或y_pred_accuracy = model.score(X_test, y_test)
print(f"模型的准确率: {
accuracy
浙公网安备 33010602011771号