文章目录
1.导入必要的模块
2.生成数据
3.模型搭建
4.模型训练
5.模型预测
6.logistic回归模型
7.画出预测曲线
8.计算评价指标accuracy
正文内容:
1.导入必要的模块
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
2.生成数据
2.1定义数据生成函数
def create_data(data_num=100):
np.random.seed(21)
x1=np.random.normal(1,0.2,data_num)
x2=np.random.normal(2,0.2,data_num)
x=np.append(x1,x2)
y=np.array([0]*data_num+[1]*data_num)
return x,y
2.2生成数据
X,y=create_data(1000)
X
array([0.98960715, 0.97776079, 1.20835936, ..., 1.84049108, 2.14936146,
1.90338769])
y
array([0, 0, 0, ..., 1, 1, 1])
2.3划分训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(
X,y,test_size=0.3,random_state=16)
2.4画出训练集数据散点图
plt.scatter(X_train,y_train,color='blue',s=20)
plt.show()
2.5画出测试集数据散点图
plt.scatter(X_test,y_test,color='g',s=20)
plt.show()
3.模型搭建
from sklearn.linear_model import LogisticRegression
model=LogisticRegression()
4.模型训练
- 线性回归模型训练 sklearn.linear_model.LogisticRegression.fit
- 用到的参数:
—X:输入特征,如果输入是np.array格式,shape必须是(n_sample,n_feature)。
—Y:输入标签。
X_train=X_train.reshape(-1,1)
model.fit(X=X_train,y=y_train)
LogisticRegression()
5.模型预测
- 对测试集做预测
- 线性回归预测模型:sklearn.linear_model.LogisticRegression.predict
- 用到的参数:
—X:输入特征,如果输入是np.array格式,shape必须是(n_sample,n_feature)。
—C:预测结果。
X_test=X_test.reshape(-1,1)
y_test_pred=model.predict(X=X_test)
y_test_pred_proba=model.predict_proba(X=X_test)
取阀值判断概率的二分类结果
def thes_func(x):
thes=0.6
return 1 if x>thes else 0
y_test_pred_thes=list(map(thes_func,y_test_pred_proba[:,1]))
6.查看Logistic回归模型的系数w和截距b
- 回归系数:sklearn.linear_model.LogisticRegression.coef_
- 截距项:sklearn.linear_model.LogisticRegression.intercep_
w,b=model.coef_[0],model.intercept_
print('Weight={0}bias={1}'.format(w,b))
Weight=[9.53805539]bias=[-14.3705638]
7.画出预测曲线
- scipy.special.expit函数,也称为logistic sigmoid函数,定义:expit(x)=1/(1+e-x)
- 参数:
–x:sigmoid函数的输入,输入要求是np.array数组格式。
–out:sigmoid函数的输出,以np.array数组的格式返回,形状与输入x相同。
from scipy.special import expit
X_train=X_train.reshape(-1)
X_test=X_test.reshape(-1)
sigmoid=expit(np.sort(X_test)*model.coef_[0]+model.intercept_)
plt.plot(np.sort(X_test),sigmoid,color='g')
plt.scatter(X_test,y_test,color='r',label='test dataset')
plt.legend()
plt.show()
8.计算评价指标Accuracy
- 均方误差:sklearn.metrics.accuracy_score
- 用到的参数:
—y_true:真实值(ground_truth)
—y_pred:预测值。
返回:
–loss:accuracy计算结果。
from sklearn.metrics import accuracy_score
acc=accuracy_score(y_true=y_test,y_pred=y_test_pred)
print('Accuracy:{}'.format(acc))
Accuracy:0.9916666666666667