# 基于逻辑回归的分类预测
本文主要是使用 sklearn 鸢尾花(iris)数据集进行的多分类逻辑回归当中实践过程的思路整理
# 逻辑回归简要介绍
Logistic 分布是一种连续型概率分布,其分布函数为
Sigmoid 函数为
Sigmoid 函数为
, 时的特殊的 Logistic 函数 实际处理一般取
Logistic 回归主要用于分类问题,可以处理二分类和多分类问题
对于函数会取一个边界值,当大于这个值会分类为,小于这个值会分类为 0,由此形成一个决策边界(Decision Boundary),再决策边界之上就分类为 1,反之分类为 0
# 数据读取
项目开始前一般要先调库,此处使用 numpy, matplotlib, seaborn, sklearn, pandas
这里使用 sklearn 内置的数据集训练
from sklearn.datasets import load_iris
data = load_iris()
iris_target = data.target
iris_features = pd.DataFrame(data=data.data,columns=data.feature_names)
1
2
3
4
2
3
4
# 数据特征描述
先对数据有一个整体的认识,根据数据选择具体的模型和算法
###iris_features为pandas的DataFrame
##查看数据整体信息
iris_features.info()
##查看头部数据
iris_features.head()
##查看每个类别数量
pd.Series(iris_target).value_counts()
##观察数据的一些统计特征
iris_feature.describle()
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 数据预处理
iris_all = iris_features.copy()
##进行浅拷贝,防止对于原始数据的修改
1
2
2
在训练开始前最好进行拷贝,防止丢失原数据
一般也会有数据标准化的过程,即相应的特征减去该特征的均值,除以标准差。
训练集和测试集的划分,为了防止过拟合也可以再分划出交叉验证集
from sklean.model_selection import train_test_split
x_tran,x_test,y_train,y_test = train_test_split(iris_features,iris_target,test_size=0.3,random_state = 2021)
1
2
2
# 模型训练
##模型定义
clf = LogisticRegression(random_state=0,slover='lbfgs')
##喂数据
clf.fit(x_train,y_train)
##做预测
test_predict = clf.predict(x_test)
1
2
3
4
5
6
2
3
4
5
6
# 模型评测
使用 metrics 的准确度评估模型效果
## metrcis在sklearn库中
metrcis.accuracy_score(y_test,test_predict)
1
2
2
查看预测结果的混淆矩阵,*用热力图对于结果进行可视化
confusion_matrix_result = metric.confusion_matrix(test_predict,y_test)
###pyplot绘制热力图会很麻烦,此处用seaborn
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('这是一个无情的横轴')
plt.ylabel('这是一个无情的纵轴')
plt.show()
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
个人心得:
对于一些库的函数比较生疏,内置的变量和方法都比较懵逼,以后要多上手练习,多做实战项目