python-机器学习-LR逻辑回归

1.源码

#导入函数
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#导入数据
from sklearn.datasets import load_iris
data = load_iris()
iris_target = data.target
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names) #利用 Pandas 转化为 DataFrame 格式
## 查看数据的整体信息
iris_features.info()
## 查看每个类别数量
pd.Series(iris_target).value_counts()
## 对于特征进行一些统计描述
iris_features.describe()
## 合并标签和特征信息
iris_all = iris_features.copy() ##进行浅拷贝,防止对于原始数据的修改
iris_all['target'] = iris_target
## 可视化
sns.pairplot(data=iris_all,diag_kind='hist', hue= 'target')
plt.show()
#3D 可视化
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, projection='3d')
iris_all_class0 = iris_all[iris_all['target']==0].values
iris_all_class1 = iris_all[iris_all['target']==1].values
iris_all_class2 = iris_all[iris_all['target']==2].values
# 'setosa'(0), 'versicolor'(1), 'virginica'(2)
ax.scatter(iris_all_class0[:,0], iris_all_class0[:,1], iris_all_class0[:,2],label='setosa')
ax.scatter(iris_all_class1[:,0], iris_all_class1[:,1], iris_all_class1[:,2],label='versicolor')
ax.scatter(iris_all_class2[:,0], iris_all_class2[:,1], iris_all_class2[:,2],label='virginica')
plt.legend()
plt.show()
## 划分为训练集和测试集
from sklearn.model_selection import train_test_split
## 选择其类别为 0 和 1 的样本 (不包括类别为 2 的样本)
iris_features_part = iris_features.iloc[:100]
iris_target_part = iris_target[:100]
## 训练集测试集 7/3 分
x_train, x_test, y_train, y_test = train_test_split(iris_features_part, iris_target_part, test_size = 0.3, random_state = 2020)
## 从 sklearn 中导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=0, solver='lbfgs')
# 训练模型
clf.fit(x_train, y_train)
## 查看其对应的 w
print('the weight of Logistic Regression:',clf.coef_)
## 查看其对应的 w0
print('the intercept(w0) of Logistic Regression:',clf.intercept_)
## 预测模型
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
from sklearn import metrics
## 利用 accuracy(准确度)评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))
## 查看混淆矩阵 (预测值和真实值的各类情况统计矩阵)
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)
# 可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()
##多分类预测
## 训练集测试集还是 7/3 分
x_train, x_test, y_train, y_test = train_test_split(iris_features, iris_target, test_size = 0.3, random_state = 2020)
## 建模
clf = LogisticRegression(random_state=0, solver='lbfgs')
## 训练模型
clf.fit(x_train, y_train)
## 预测模型
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
## p = p(y=1|x,\theta)),预测模型概率
train_predict_proba = clf.predict_proba(x_train)
test_predict_proba = clf.predict_proba(x_test)
print('The test predict Probability of each class:\n',test_predict_proba)
## 其中第一列代表预测为 0 类的概率,第二列代表预测为 1 类的概率,第三列代表预测为2 类的概率。
## 利用 accuracy 评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))
## 查看混淆矩阵
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)# 可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()

2.运行结果

 

 

 

 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西唯兵欧泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值