▌前言
本视频主要介绍Linear SVC的简单应用, 方便大家了解Machine Learning(机器学习)
的运作。
▌视频
▌视频出处
视频系列:Scikit-learn Machine Learning with Python and SKlearn
本视频出处:Scikit Learn Machine Learning for investing Tutorial with Python p. 11
哔哩哔哩:Scikit Learn Machine Learning for investing Tutorial with Python p. 11
▌内容
假设我们有两组数据分别为x 和 y,然后将两组数据画出来。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
x = [1, 5, 1.5, 8, 1, 9]
y = [2, 8, 1.8, 8, 0.6, 11]
plt.scatter(x,y)
plt.show()
我们该如何区分这两组数据? 最简单的方法就是在中间画一条线。
首先,我们先将数据转换为np.array形式
。 np.array
是一种符合展现Machine Learning(机器学习)
的数据类型。 然后将X的每组数据对应标记为y。例如,数组X的[1,2]对应为y中[0],X的[5,8]对应y中的[1]。
X = np.array(
[
[1,2],
[5,8],
[1.5,1.8],
[8,8],
[1,0.6],
[9,11]
]
)
y = [0,1,0,1,0,1]
然后,我们建立一个classifier(分类器)
。kernel 为linear(线性回归) 。
clf = svm.SVC(kernel='linear', C = 1.0)
clf = svm.SVC(kernel='linear', C = 1.0)
我们设置好线性回归模型之后,我们要训练(fit)
之前设置好的数据X, y:
clf.fit(X,y)
到此,我们已经训练好我们的数据,那么我们输入新的数据的时候,电脑就会帮我们进行区分或者预测这组数据究竟是属于0 或者 1.
print(clf.predict([0.58,0.76]))
print(clf.predict([10.58,10.76]))
输出结果分别为:[0] 和 [1]
最后我们将其得出的线性方程画出来:
w = clf.coef_[0] #系数
print(w)
a = -w[0] / w[1]
xx = np.linspace(0,12)
yy = a * xx - clf.intercept_[0] / w[1]
h0 = plt.plot(xx, yy, 'k-', label="non weighted div")
plt.scatter(X[:, 0], X[:, 1], c = y)
plt.legend()
plt.show()
▌源代码
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn import svm
#x = [1, 5, 1.5, 8, 1, 9]
#y = [2, 8, 1.8, 8, 0.6, 11]
#plt.scatter(x,y)
#plt.show()
X = np.array(
[
[1,2],
[5,8],
[1.5,1.8],
[8,8],
[1,0.6],
[9,11]
]
)
y = [0,1,0,1,0,1]
clf = svm.SVC(kernel='linear', C = 1.0)
clf.fit(X,y)
print(clf.predict([0.58,0.76]))
print(clf.predict([10.58,10.76]))
w = clf.coef_[0]
print(w)
a = -w[0] / w[1]
xx = np.linspace(0,12)
yy = a * xx - clf.intercept_[0] / w[1]
h0 = plt.plot(xx, yy, 'k-', label="non weighted div")
plt.scatter(X[:, 0], X[:, 1], c = y)
plt.legend()
plt.show()
▌总结
其实机器学习的原理很简单,首先将我们fit(训练)已有的数据,电脑从大量数据中区分了X对应的y特征后,电脑就可以’预测’区分我们输入的新数据,这就是机器学习。
▌最后
虽然分c君_BingWong
只是作为一名搬运工,连码农都称不上。 但制作代码中的注释、翻译和搬运都花了很多时间,请各位大侠高抬贵手,在转载时请注明出处。