https://github.com/PacktPublishing/Machine-Learning-Algorithms
首先导入套件,上面的是用来算数学的;下面的是用来画画的,并且帮它们取绰号(np & plt)。
import numpy as np
import matplotlib.pyplot as plt
再来,用seed()随机产生整数的乱数後,使用最小平方差公式,定义损失函数。
np.random.seed(1000) def loss(v): e = 0.0 for i in range(nb_samples): e += np.square(v[0] + v[1]*X[i] - Y[i]) return 0.5 * e
接着,定义梯度下降法函数。
def gradient(v): g = np.zeros(shape=2) for i in range(nb_samples): g[0] += (v[0] + v[1]*X[i] - Y[i]) g[1] += ((v[0] + v[1]*X[i] - Y[i]) * X[i]) return g
最後,从scipy套件导入minimize最优化函数,就可以印出二维线性回归图了。
from scipy.optimize import minimize result = minimize(fun=loss, x0=np.array([0.0, 0.0]), jac=gradient, method='L-BFGS-B')
首先导入boston范例,将它印出看看长怎样。
from sklearn.datasets import load_boston def show_dataset(data): fig, ax = plt.subplots(4, 3, figsize=(20, 15)) for i in range(4): for j in range(3): ax[i, j].plot(data.data[:, i + (j + 1) * 3]) ax[i, j].grid() plt.show() boston = load_boston() show_dataset(boston)
因为原始资料太少,所以把资料拆成训练用跟测试用来交叉验证,就是把资料切成K等分,K-1等分用来训练模型,就会迭代K次,最後,建模并训练模型。
from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split, cross_val_score X_train, X_test, Y_train, Y_test = train_test_split(boston.data, boston.target, test_size=0.1) lr = LinearRegression(normalize=True) lr.fit(X_train, Y_train)
再来,使用scikit-learn内建score()评估模型,计算准确率。
print('Score %.3f' % lr.score(X_test, Y_test)) // Score 0.693
接着,运用cross_val_score()选择评分测试方式,这里用负均方差。
from sklearn.model_selection import train_test_split, cross_val_score scores = cross_val_score(lr, boston.data, boston.target, cv=7, scoring='neg_mean_squared_error') print('CV Negative mean squared errors mean: %.3f' % scores.mean()) // CV Negative mean squared errors mean: -37.287 print('CV Negative mean squared errors std: %.3f' % scores.std()) // CV Negative mean squared errors std: 46.790
最後,计算实际结果与样本之间的差,越靠近1越好、越靠近0越不好。
r2_scores = cross_val_score(lr, boston.data, boston.target, cv=10, scoring='r2') print('CV R2 score: %.3f' % r2_scores.mean()) // CV R2 score: 0.203
<<: 第 4 天 英雄有偶包怎麽办|*ngFor、JsonPipe、Angular Material、Mat-Card、Mat-Button
(其实现在应该很少使用JSONP了,只是跟上一篇比较有关所以顺便整理,简单了解一下就好。) JSON...
所有的安排都不一定会照着计画走 比如说以前的旅行可能会像是踩点一样 安排好很多个景点 在有限时间底...
什麽是 ADO.NET ADO.NET 是微软针对 .NET 平台所提供的负责资料存取的类别程序库,...
继上篇观察整个专案资料夹结构之後,接着来观察子层 components 资料夹里的 HelloWor...
上篇回顾 Story Telling - 简易有效的讨论 讲到会议很烦很冗长没重点还要开好几次, 是...