在上一节中,根据逻辑回归的原理,利用python编写了实现线性分类的代码。
Python 分类算法(1)——逻辑回归logistic regression之代码实现(1)
本节中,直接调用sklearn中的逻辑回归函数,还是利用上节中的数据,完成数据分类。
import numpy as npimport pandas as pdscatterdata=pd.read_csv("C:/Users/Ray/Desktop/logistic regression/data3.csv",header=None)## scatterdata.head()data=np.array(scatterdata)# print(data[:,1])
x=data[:,0:2]y=data[:,2]# print(x.shape)
调用sklearn中的逻辑回归函数
from sklearn.linear_model import LogisticRegressionfrom sklearn import metricslogmodel=LogisticRegression()logmodel.fit(x,y)y_pre=logmodel.predict(x)
from sklearn.metrics import confusion_matriximport seaborn as snsimport matplotlib.pyplot as pltimport matplotlibmatplotlib.rcParams['font.sans-serif'] = ['SimHei']mat = confusion_matrix(y,y_pre)sns.heatmap(mat, square=True, annot=True, cbar=False)plt.xlabel('预测值')plt.ylabel('真实值');
print(mat)print(metrics.classification_report(y, y_pre))from sklearn.metrics import accuracy_scoreprint('分类精度为:',accuracy_score(y,y_pre))
根据上面的结果利用contourf绘制分隔线。
from matplotlib.colors import ListedColormapimport matplotlibmatplotlib.rcParams['axes.unicode_minus']=Falsematplotlib.rcParams['font.sans-serif'] = ['SimHei']def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):markers = ('s', 'x', 'o', '^', 'v')colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')cmap = ListedColormap(colors[:len(np.unique(y))])x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),np.arange(x2_min, x2_max, resolution))Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)Z = Z.reshape(xx1.shape)plt.contourf(xx1, xx2, Z, alpha=0.3, cmap=cmap)pos=where(y==1)neg=where(y==0)plt.scatter(x[pos[0],0],x[pos[0],1],marker='o',c='b')plt.scatter(x[neg[0],0],x[neg[0],1],marker='x',c='r')plt.xlim(xx1.min(), xx1.max())plt.ylim(xx2.min(), xx2.max())
plot_decision_regions(X=x, y=y, classifier=logmodel)
上节中的分类效果如下图所示