sklearn机器学习之逻辑回归分类器

物以类聚,人以群分。

是非黑白,金木水火。

乾坤阴阳,寒暑燥湿。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model


#训练数据(此处示例是二维平面上的坐标点和各个点对应的类别)    
X = np.array([[3.1, 7.2], [4, 6.7], [2.9, 8], [5.1, 4.5], [6, 5],[5.6, 5], [3.3, 0.4], [3.9, 0.9], [2.8, 1], [0.5, 3.4], [1, 4],[0.6, 4.9]])
y = np.array([0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3])

#解析模型选用线性模型的逻辑回归
classifier = linear_model.LogisticRegression(solver='liblinear',C=100)

#用分类模型和数据进行训练
classifier.fit(X, y)

#计算边界(在原数据坐标范围外扩1个单位)
min_x, max_x = X[:, 0].min() - 1.0, X[:, 0].max() + 1.0
min_y, max_y = X[:, 1].min() - 1.0, X[:, 1].max() + 1.0

#绘制网格步长
mesh_step_size = 0.01

#生成网格坐标数列
x_vals, y_vals = np.meshgrid(np.arange(min_x, max_x,mesh_step_size), np.arange(min_y, max_y, mesh_step_size))


#★★★★★使用之前用数据训练好的分类器预测网格坐标所属类别
#实际上可以简单理解为输入坐标点X',输出坐标点所属类别y'
#背后的分类算法sklearn已经做好,此处只是调用,无需自己从零开始实现
output = classifier.predict(np.c_[x_vals.ravel(),y_vals.ravel()])

#网格重新造型
output = output.reshape(y_vals.shape)

#可视化绘制网格图形
plt.figure()

#plt.pcolormesh(x_vals, y_vals, output, cmap=plt.cm.gray)
plt.pcolormesh(x_vals, y_vals, output, cmap=plt.cm.Spectral)


plt.scatter(X[:, 0], X[:, 1], c=y, s=200, edgecolors='red',linewidth=1)


plt.xlim(x_vals.min(), x_vals.max())
plt.ylim(y_vals.min(), y_vals.max())

plt.xticks((np.arange(int(X[:, 0].min() - 1), int(X[:, 0].max() + 1), 1.0)))
plt.yticks((np.arange(int(X[:, 1].min() - 1), int(X[:, 1].max() + 1), 1.0)))

plt.show()

猜你喜欢

转载自blog.csdn.net/MAILLIBIN/article/details/83013133