国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python數(shù)據(jù)擬合與廣義線性回歸算法學習

2020-02-16 11:15:02
字體:
供稿:網(wǎng)友

機器學習中的預(yù)測問題通常分為2類:回歸與分類。

簡單的說回歸就是預(yù)測數(shù)值,而分類是給數(shù)據(jù)打上標簽歸類。

本文講述如何用Python進行基本的數(shù)據(jù)擬合,以及如何對擬合結(jié)果的誤差進行分析。

本例中使用一個2次函數(shù)加上隨機的擾動來生成500個點,然后嘗試用1、2、100次方的多項式對該數(shù)據(jù)進行擬合。

擬合的目的是使得根據(jù)訓練數(shù)據(jù)能夠擬合出一個多項式函數(shù),這個函數(shù)能夠很好的擬合現(xiàn)有數(shù)據(jù),并且能對未知的數(shù)據(jù)進行預(yù)測。

代碼如下:

import matplotlib.pyplot as plt import numpy as np import scipy as sp from scipy.stats import norm from sklearn.pipeline import Pipeline from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeatures from sklearn import linear_model  ''''' 數(shù)據(jù)生成 ''' x = np.arange(0, 1, 0.002) y = norm.rvs(0, size=500, scale=0.1) y = y + x**2  ''''' 均方誤差根 ''' def rmse(y_test, y):  return sp.sqrt(sp.mean((y_test - y) ** 2))  ''''' 與均值相比的優(yōu)秀程度,介于[0~1]。0表示不如均值。1表示完美預(yù)測.這個版本的實現(xiàn)是參考scikit-learn官網(wǎng)文檔 ''' def R2(y_test, y_true):  return 1 - ((y_test - y_true)**2).sum() / ((y_true - y_true.mean())**2).sum()   ''''' 這是Conway&White《機器學習使用案例解析》里的版本 ''' def R22(y_test, y_true):  y_mean = np.array(y_true)  y_mean[:] = y_mean.mean()  return 1 - rmse(y_test, y_true) / rmse(y_mean, y_true)   plt.scatter(x, y, s=5) degree = [1,2,100] y_test = [] y_test = np.array(y_test)   for d in degree:  clf = Pipeline([('poly', PolynomialFeatures(degree=d)),      ('linear', LinearRegression(fit_intercept=False))])  clf.fit(x[:, np.newaxis], y)  y_test = clf.predict(x[:, np.newaxis])   print(clf.named_steps['linear'].coef_)  print('rmse=%.2f, R2=%.2f, R22=%.2f, clf.score=%.2f' %   (rmse(y_test, y),   R2(y_test, y),   R22(y_test, y),   clf.score(x[:, np.newaxis], y)))     plt.plot(x, y_test, linewidth=2)   plt.grid() plt.legend(['1','2','100'], loc='upper left') plt.show() 

該程序運行的顯示結(jié)果如下:

[-0.16140183  0.99268453]
rmse=0.13, R2=0.82, R22=0.58, clf.score=0.82
[ 0.00934527 -0.03591245  1.03065829]
rmse=0.11, R2=0.88, R22=0.66, clf.score=0.88
[  6.07130354e-02  -1.02247150e+00   6.66972089e+01  -1.85696012e+04
......
-9.43408707e+12  -9.78954604e+12  -9.99872105e+12  -1.00742526e+13
-1.00303296e+13  -9.88198843e+12  -9.64452002e+12  -9.33298267e+12
  -1.00580760e+12]
rmse=0.10, R2=0.89, R22=0.67, clf.score=0.89
顯示出的coef_就是多項式參數(shù)。如1次擬合的結(jié)果為
y = 0.99268453x -0.16140183

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 彩票| 大城县| 澄迈县| 济宁市| 思南县| 固安县| 崇阳县| 南平市| 肃南| 宁化县| 来宾市| 金塔县| 朔州市| 牙克石市| 磐石市| 乡宁县| 衡山县| 德化县| 临沧市| 平陆县| 永川市| 延吉市| 眉山市| 铁岭县| 兴国县| 合作市| 安庆市| 三穗县| 尚义县| 肇州县| 黄陵县| 白水县| 陕西省| 惠东县| 改则县| 章丘市| 望谟县| 合江县| 百色市| 宣汉县| 汶川县|