機器學習測試筆記(12)——線性回歸方法(下)

2021-03-02 軟體測試培訓

顧老師新書《全棧軟體測試工程師寶典》

https://item.m.jd.com/product/10023427978355.html

以前兩本書的網上購買地址:

《軟體測試技術實戰設計,工具及管理》:

https://item.jd.com/34295655089.html

《基於Django的電子商務網站》:

https://item.jd.com/12082665.html

3.邏輯回歸

大家都知道符號函數:

 f(x)=0       (x=0)

    =-1      (x<0)

      =1       (x>1)

下面這個函數是符號函數的一個變種:

g(x) =0.5    (x=0)

       =0       (x<0)

       =1       (x>1)

函數正好符合這個函數與這個函數相吻合,且他是一個連續函數.函數曲線如下:

我們把這個函數叫做邏輯函數,由y=wx,我們令z= wx, 即,這樣當y=0, g(x)』=0.5; y>0, g(x)』>0.5且趨於1;y<0, g(x)』<0.5且趨於0,從而達到二分類的目的。sklearn.linear_model通過LogisticRegression類實現邏輯回歸。

from sklearn.linear_model import LogisticRegressiondef useing_sklearn_datasets_for_LogisticRegression():                cancer =  datasets.load_breast_cancer()        X = cancer.data        y = cancer.target        print("X的shape={},正樣本數:{},負樣本數:{}".format(X.shape, y[y  == 1].shape[0], y[y == 0].shape[0]))        X_train, X_test,  y_train, y_test = train_test_split(X, y, test_size=0.2)                model =  LogisticRegression()        model.fit(X_train,  y_train)                train_score =  model.score(X_train, y_train)        test_score =  model.score(X_test, y_test)        print("乳腺癌訓練集得分:{trs:.2f},乳腺癌測試集得分:{tss:.2f}".format(trs=train_score,  tss=test_score))


輸出

X的shape=(569,  30),正樣本數:357,負樣本數:212乳腺癌訓練集得分:0.95,乳腺癌測試集得分:0.95

這個結果還是非常滿意的。

4.嶺回歸

嶺回歸(英文名:Ridgeregression, Tikhonov regularization)是一種專用於共線性數據分析的有偏估計回歸方法,實質上是一種改良的最小二乘估計法,通過放棄最小二乘法的無偏性,以損失部分信息、降低精度為代價獲得回歸係數更為符合實際、更可靠的回歸方法,對病態數據的擬合要強於最小二乘法。嶺回歸通過犧牲訓練集得分,獲得測試集得分。採用Ridge函數實現

from sklearn.linear_model import Ridgedef useing_sklearn_datasets_for_Ridge():       X,y =  datasets.load_diabetes().data,datasets.load_diabetes().target       X_train,X_test,y_train,y_test  = train_test_split(X, y, random_state=8,test_size=0.3)       lr =  LinearRegression().fit(X_train,y_train)       ridge =  Ridge().fit(X_train,y_train)       print('alpha=1,糖尿病訓練集得分:  {:.2f}'.format(ridge.score(X_train,y_train)))       print('alpha=1,糖尿病測試集得分:  {:.2f}'.format(ridge.score(X_test,y_test)))       ridge10 =  Ridge(alpha=10).fit(X_train,y_train)       print('alpha=10,糖尿病訓練集得分:  {:.2f}'.format(ridge10.score(X_train,y_train)))       print('alpha=10,糖尿病測試集得分:  {:.2f}'.format(ridge10.score(X_test,y_test)))       ridge01 =  Ridge(alpha=0.1).fit(X_train,y_train)       print('alpha=0.1,糖尿病訓練集得分:  {:.2f}'.format(ridge01.score(X_train,y_train)))       print('alpha=0.1,糖尿病測試集得分:  {:.2f}'.format(ridge01.score(X_test,y_test)))

輸出

alpha=1,糖尿病訓練集得分: 0.43alpha=1,糖尿病測試集得分: 0.43alpha=10,糖尿病訓練集得分: 0.14alpha=10,糖尿病測試集得分: 0.16alpha=0.1,糖尿病訓練集得分: 0.52alpha=0.1,糖尿病測試集得分: 0.47

通過下表分析一下各個alpha下訓練集和測試集下的得分。

alpha

訓練集得分

測試集得分

1

0.43

0.43

10

0.14

0.16

0.1

0.52

0.47

線性回歸

0.54

0.45

plt.plot(ridge.coef_,'s',label='Ridge alpha=1')plt.plot(ridge10.coef_,'^',label='Ridge alpha=10')plt.plot(ridge01.coef_,'v',label='Ridge alpha=0.1')plt.plot(lr.coef_,'o',label='Linear Regression')plt.xlabel('coefficient index')plt.ylabel('coefficient magnitude')plt.hlines(0,0,len(lr.coef_))plt.show()

alpha越大,收斂性越好

from sklearn.model_selection import learning_curve,KFolddef plot_learning_curve(est, X, y):tarining_set_size,train_scores,test_scores = learning_curve(                 est,X,y,train_sizes=np.linspace(.1,1,20),cv=KFold(20,shuffle=True,random_state=1))estimator_name = est.__class__.__name__line =  plt.plot(tarining_set_size,train_scores.mean(axis=1),'--',label="training"+estimator_name)plt.plot(tarining_set_size,test_scores.mean(axis=1),'-',label="test"+estimator_name,c=line[0].get_color())plt.xlabel('training set size')plt.ylabel('Score')plt.ylim(0,1.1)

plot_learning_curve(Ridge(alpha=1), X,y) plot_learning_curve(LinearRegression(), X,y) plt.legend(loc=(0,1.05),ncol=2,fontsize=11) plt.show()

以上結果說明:

訓練集得分比測試集得分要高;

嶺回歸測試集得分比線性回歸測試集得分要低;

嶺回歸測試集得分與訓練集得分差不多;

訓練集小的時候,線性模型都學不到什麼東西;

訓練集加大,兩個得分相同。

5.套索回歸

套索回歸(英文名Lasso Regression)略同於嶺回歸。在實踐中,嶺回歸與套索回歸首先嶺回歸。但是,如果特徵特別多,而某些特徵更重要,具有選擇性,那就選擇Lasso可能更好。採用Lasso函數實現。

from sklearn.linear_model import Lassodef useing_sklearn_datasets_for_Lasso():       X,y = datasets.load_diabetes().data,datasets.load_diabetes().target       X_train,X_test,y_train,y_test  = train_test_split(X, y, random_state=8,test_size=0.3)       lasso01 =  Lasso().fit(X_train,y_train)       print('alpha=1,糖尿病訓練集得分: {:.2f}'.format(lasso01.score(X_train,y_train)))       print('alpha=1,糖尿病測試集得分:  {:.2f}'.format(lasso01.score(X_test,y_test)))       print('alpha=1,套索回歸特徵數:  {}'.format(np.sum(lasso01.coef_!=0)))       lasso01 =  Lasso(alpha=0.1,max_iter=100000).fit(X_train,y_train)       print('alpha=0.1,max_iter=100000,糖尿病訓練集得分:  {:.2f}'.format(lasso01.score(X_train,y_train)))       print('alpha=0.1,max_iter=100000,糖尿病測試集得分:  {:.2f}'.format(lasso01.score(X_test,y_test)))       print('alpha=1,套索回歸特徵數:  {}'.format(np.sum(lasso01.coef_!=0)))       lasso01 = Lasso(alpha=0.0001,max_iter=100000).fit(X_train,y_train)       print('alpha=0.0001,max_iter=100000,糖尿病訓練集得分:  {:.2f}'.format(lasso01.score(X_train,y_train)))       print('alpha=0.0001,max_iter=100000,糖尿病測試集得分:  {:.2f}'.format(lasso01.score(X_test,y_test)))       print('alpha=1,套索回歸特徵數:  {}'.format(np.sum(lasso01.coef_!=0)))

輸出

alpha=1,糖尿病訓練集得分: 0.37alpha=1,糖尿病測試集得分: 0.38alpha=1,套索回歸特徵數: 3alpha=0.1,max_iter=100000,糖尿病訓練集得分: 0.52alpha=0.1,max_iter=100000,糖尿病測試集得分: 0.48alpha=1,套索回歸特徵數: 7alpha=0.0001,max_iter=100000,糖尿病訓練集得分: 0.53alpha=0.0001,max_iter=100000,糖尿病測試集得分: 0.45alpha=1,套索回歸特徵數: 10

比較嶺回歸與套索回歸

def Ridge_VS_Lasso():       X,y =  datasets.load_diabetes().data,datasets.load_diabetes().target       X_train,X_test,y_train,y_test  = train_test_split(X, y, random_state=8,test_size=0.3)       lasso =  Lasso(alpha=1,max_iter=100000).fit(X_train,y_train)       plt.plot(lasso.coef_,'s',label='lasso  alpha=1')       lasso01 = Lasso(alpha=0.  1,max_iter=100000).fit(X_train,y_train)       plt.plot(lasso01.coef_,'^',label='lasso  alpha=0. 1')       lasso0001 =  Lasso(alpha=0.0001,max_iter=100000).fit(X_train,y_train)       plt.plot(lasso0001.coef_,'v',label='lasso  alpha=0.001')       ridge01 = Ridge(alpha=0.1).fit(X_train,y_train)       plt.plot(ridge01.coef_,'o',label='ridge01  alpha=0.1')       plt.legend(ncol=2,loc=(0,1.05))       plt.ylim(-1000,750)       plt.xlabel('Coefficient  index')       plt.ylabel("Coefficient  magnitude")       plt.show()

以上結果說明:

數據特徵比較多,並且有一小部分真正重要,用套索回歸,否則用嶺回歸。數據和方法。

6.  用sklearn數據測試所有線性模型

建立文件machinelearn_data_model.py。

 import numpy as npimport matplotlib.pyplot  as pltfrom sklearn.linear_model  import LinearRegressionfrom sklearn.linear_model  import LogisticRegressionfrom sklearn.linear_model  import Ridgefrom sklearn.linear_model  import Lassofrom sklearn.neighbors  import KNeighborsClassifierfrom sklearn.datasets import  make_regressionfrom  sklearn.model_selection import train_test_splitfrom sklearn import  datasetsfrom sklearn.pipeline  import Pipelinefrom sklearn.preprocessing  import StandardScalerfrom sklearn.svm import  LinearSVRimport statsmodels.api as  sm       class data_for_model:def machine_learn(data,model):if data ==  "iris":     mydata = datasets.load_iris()elif data ==  "wine":     mydata = datasets.load_wine()elif data ==  "breast_cancer":     mydata = datasets.load_breast_cancer()elif data == "diabetes":     mydata = datasets.load_diabetes()elif data ==  "boston":     mydata = datasets.load_boston()elif data !=  "two_moon":     return "提供的數據錯誤,包括:iris,wine,barest_cancer,diabetes,boston,two_moon"if data ==  "two_moon":     X,y = datasets.make_moons(n_samples=200,noise=0.05,  random_state=0)elif model ==  "DecisionTreeClassifie"or "RandomForestClassifie":    X,y = mydata.data[:,:2],mydata.targetelse:    X,y = mydata.data,mydata.target       X_train,X_test,y_train,y_test =  train_test_split(X, y)        if model ==  "LinearRegression":               md =  LinearRegression().fit(X_train,y_train)        elif model ==  "LogisticRegression":               if data == "boston":                    y_train =  y_train.astype('int')                    y_test =  y_test.astype('int')               md =  LogisticRegression().fit(X_train,y_train)        elif model == "Ridge":               md =  Ridge(alpha=0.1).fit(X_train,y_train)        elif model == "Lasso":               md = Lasso(alpha=0.0001,max_iter=10000000).fit(X_train,y_train)        elif model == "SVM":               md =  LinearSVR(C=2).fit(X_train,y_train)        elif model == "sm":               md = sm.OLS(y,X).fit()else:               return "提供的模型錯誤,包括:LinearRegression,LogisticRegression,Ridge,Lasso,SVM,sm "        if model == "sm":                print("results.params(diabetes):\n",md.params,  "\nresults.summary(diabetes):\n",md.summary())        else:            print("模型:",model,"數據:",data,"訓練集評分:{:.2%}".format(md.score(X_train,y_train)))            print("模型:",model,"數據:",data,"測試集評分:{:.2%}".format(md.score(X_test,y_test)))


在這裡考慮:

LogisticRegression算法在波士頓房價下要求目標y必須為int類型,所以做了判斷;

Ridge 算法的alpha參數為0.1;

Lasso算法的alpha參數為0.0001, 最大迭代數為10,000,000

這樣,我們就可以對指定模型指定數據進行定量分析

from  machinelearn_data_model import data_for_modeldef  linear_for_all_data_and_model():        datas =  ["iris","wine","breast_cancer","diabetes","boston","two_moon"]        models =  ["LinearRegression","LogisticRegression","Ridge","Lasso","SVM","sm"]        for data in datas:                for model in models:                         data_for_model.machine_learn(data,model)


我們對測試結果進行比較:

數據

模型

訓練集

測試集

鳶尾花

LinearRegression

92.7%

93.7%

LogisticRegression

96.4%

100%

Ridge

93.1%

92.8%

Lasso

92.8%

93.1%

StatsModels OLS

0.972

鳶尾花數據在所有訓練模型下表現均很好

紅酒

LinearRegression

90.6%

85.1%

LogisticRegression

97.7%

95.6%

Ridge

90.2%

86.8%

Lasso

91.0%

85.2%

StatsModels OLS

0.948

紅酒數據在所有訓練模型下表現均很好,但比鳶尾花略差些

乳腺癌

LinearRegression

79.1%

68.9%

LogisticRegression

95.3%

93.0%

Ridge

75.7%

74.5%

Lasso

77.6%

71.4%

StatsModels OLS

0.908

乳腺癌數據僅在邏輯回歸和OLS模型上表現很好

糖尿病

LinearRegression

52.5%

47.9%

LogisticRegression

02.7%

00.0%

Ridge

51.5%

49.2%

Lasso

51.5%

50.2%

StatsModels OLS

0.106

糖尿病數據在所有模型下表現均不好

波士頓房價

LinearRegression

74.5%

70.9%

LogisticRegression

20.8%

11.0%

Ridge

76.0%

62.7%

Lasso

73.5%

74.5%

StatsModels OLS

0.959

波士頓房價數據僅在OLS模型上表現很好,在其他模型下表現均不佳。但是處理邏輯回歸模型下,表現比糖尿病略好。

2個月亮

LinearRegression

66.9%

63.0%

LogisticRegression

89.3%

86.0%

Ridge

66.3%

64.3%

Lasso

65.3%

65.2%

StatsModels OLS

0.501

2個月亮數據在LogisticRegressio模型下表現最好,其他表現不太好。

總結如下表(綠色表現好,紅色表現不好,紫色一般):

數據類型

LinearRegression

LogisticRegression

Ridge

Lasso

OLS

鳶尾花






紅酒






乳腺癌






糖尿病






波士頓房價






2個月亮






我們最後把KNN算法也捆綁進去,machinelearn_data_model.py經過如下改造

…elif model == "KNeighborsClassifier":if data == "boston":y_train = y_train.astype('int')y_test = y_test.astype('int')md = KNeighborsClassifier().fit(X_train,y_train)else:       return "提供的模型錯誤,包括:LinearRegression,LogisticRegression,Ridge,Lasso,SVM,sm,KNeighborsClassifier"…


調用測試程序

from machinelearn_data_model import data_for_modeldef KNN_for_all_data_and_model():        datas =  ["iris","wine","breast_cancer","diabetes","boston","two_moon"]        models =  ["KNeighborsClassifier"]        for data in datas:                for model in  models:                         data_for_model.machine_learn(data,model)


得到測試結果

數據

模型

訓練集

測試集

鳶尾花

KNeighborsClassifier

95.5%

97.4%

紅酒

KNeighborsClassifier

76.7%

68.9%

乳腺癌

KNeighborsClassifier

95.3%

90.2%

糖尿病

KNeighborsClassifier

19.6%

00.0%

波士頓房價

KNeighborsClassifier

36.4%

04.7%

2個月亮

KNeighborsClassifier

100.00%

100.00%

由此可見,KNeighborsClassifier對鳶尾花,乳腺癌和2個月亮數據是比較有效的。

數據類型

KNeighborsClassifier

鳶尾花


紅酒


乳腺癌


糖尿病


波士頓房價


2個月亮


 

——————————————————————————————————

顧老師課程歡迎報名

軟體安全測試

https://study.163.com/course/courseMain.htm?courseId=1209779852&share=2&shareId=480000002205486

接口自動化測試

https://study.163.com/course/courseMain.htm?courseId=1209794815&share=2&shareId=480000002205486

DevOps和Jenkins之DevOps

https://study.163.com/course/courseMain.htm?courseId=1209817844&share=2&shareId=480000002205486

DevOps與Jenkins 2.0之詹金斯

https://study.163.com/course/courseMain.htm?courseId=1209819843&share=2&shareId=480000002205486

硒自動化測試

https://study.163.com/course/courseMain.htm?courseId=1209835807&share=2&shareId=480000002205486

性能測試第1季:性能測試基礎知識

https://study.163.com/course/courseMain.htm?courseId=1209852815&share=2&shareId=480000002205486

性能測試第2季:LoadRunner12使用

https://study.163.com/course/courseMain.htm?courseId=1209980013&share=2&shareId=480000002205486

性能測試第3季:JMeter工具使用

https://study.163.com/course/courseMain.htm?courseId=1209903814&share=2&shareId=480000002205486

性能測試第4季:監控與調優

https://study.163.com/course/courseMain.htm?courseId=1209959801&share=2&shareId=480000002205486

Django入門

https://study.163.com/course/courseMain.htm?courseId=1210020806&share=2&shareId=480000002205486

啄木鳥顧老師漫談軟體測試

https://study.163.com/course/courseMain.htm?courseId=1209958326&share=2&shareId=480000002205486

相關焦點

  • python機器學習--線性回歸
    python機器學習--線性回歸線性回歸是最簡單的機器學習模型,其形式簡單,易於實現,同時也是很多機器學習模型的基礎。對於一個給定的訓練集數據,線性回歸的目的就是找到一個與這些數據最吻合的線性函數。針對線性回歸算法在之前的數模案例也有涉及喔,歡迎去看看上一篇博客數學建模預測模型實例--大學生體測數據模型在這裡插入圖片描述OLS線性回歸Ordinary Least Squares 最小二乘法一般情況下,線性回歸假設模型為下,其中w為模型參數
  • 數據科學&機器學習的筆記1:分類、線性回歸和邏輯回歸
    我想把之前數據科學&機器學習所學系統地整理、融合一下,所以寫了一些筆記。
  • 機器學習套路:線性回歸
    (點擊上方藍字,快速關注我們)轉自:sharkdtuhttp://sharkdtu.com/posts/ml-linear-regression.html好文投稿, 請點擊 → 這裡了解詳情線性回歸可以說是機器學習中最簡單
  • Python 機器學習:多元線性回歸
    公眾號: datayx接著上一次的一元線性回歸python機器學習:線性回歸往下講,這篇文章要講解的多元線性回歸。1、什麼是多元線性回歸模型?當y值的影響因素不唯一時,採用多元線性回歸模型。例如商品的銷售額可能不電視廣告投入,收音機廣告投入,報紙廣告投入有關係,可以有 sales =β0+β1*TV+β2* radio+β3*newspaper.
  • 機器學習 | 線性回歸大家族Part1
    目前,機器學習在疾病的鑑別診斷,藥物的生產研究,臨床試驗研究,放射影像學等醫學領域已有十分廣泛的應用。今天推出機器學習系列筆記第20期,本期分享內容為:機器學習之線性回歸大家族Part1。通常來說,我們認為統計學注重先驗,而機器學習看重結果,因此機器學習中不會提前為線性回歸排除共線性等可能會影響模型的因素,反而會先建立模型以查看效果。模型確立之後,如果效果不好,我們就根據統計學的指導來排除可能影響模型的因素。回歸需求在現實中非常多,所以我們自然也有各種各樣的回歸類算法。
  • 入門機器學習之線性回歸
    最常用的回歸方法如下:1、Linear Regression線性回歸:它是最為人熟知的建模技術之一。線性回歸通常是人們在學習預測模型時首選的技術之一。在這種技術中,因變量是連續的,自變量可以是連續的也可以是離散的,回歸線的性質是線性的。線性回歸使用最佳的擬合直線(也就是回歸線)在因變量(Y)和一個或多個自變量(X)之間建立一種關係。
  • 數據科學筆記(三)——線性回歸
    機器學習眼中的線性回歸  左圖是原始建模數據,目的是用來尋找玩偶數量和成本的某種關係。右圖將數據可視化得到散點圖。第一步 進行場景確定  實際上使用左面的函數定義損失函數也能得到一個線性模型,只是並不是我們常說的線性回歸模型而已。  所以:損失函數是機器學習模型的核心。(即使相同的模型形式,不同的損失函數對應著不同模型的效果)。第三步 特徵提取  原始數據比較乾淨,所以並不需要進行數據清洗。在本題中玩偶個數可以作為特徵直接使用。
  • 文科生都能看懂的機器學習教程:梯度下降、線性回歸、邏輯回歸
    現在,機器學習這麼火,想入行的人越來越多,然而被搞糊塗的人也越來越多。因為大眾很難理解機器學習是幹嗎的?那些神秘拗口的概念,比如邏輯回歸、梯度下降到底是什麼?j  一個23歲的藥物學專業的學生說,當他去參加機器學習培訓課程的時候,感覺自己就家裡那位不懂現代科技的奶奶。
  • 機器學習基本概念-維度災難和線性回歸
    由於數據在每個維度上的範圍僅為1而我們卻需要用掉0.63,因此我們可以看到該方法不再是非常局部的。查看如此遙遠的鄰居的問題是,它們可能不能很好地預測給定點上輸入-輸出函數的行為。1.4.4 分類和回歸的參數模型克服維度災難的主要方法是對數據分布的性質(p(y|x)或p(x))做一些假設。
  • 機器學習開放課程(四)線性分類與線性回歸
    編者按:機器學習開放課程第四課,Mail.Ru數據科學家Yury Kashnitsky深入講解線性分類和線性回歸的理論與實踐。
  • 8種用Python實現線性回歸的方法
    另一方面,也是更為重要的一點,線性模型的易解釋性使得它在物理學、經濟學、商學等領域中佔據了難以取代的地位。那麼,如何用Python來實現線性回歸呢?由於機器學習庫scikit-learn的廣泛流行,常用的方法是從該庫中調用linear_model來擬合數據。
  • sklearn機器學習心得—線性回歸|粉絲投稿1
    ,也是重要的算法之一,基本上第一次接觸的機器學習算法就是線性回歸了。因為相對其他算法而言,我覺得線性回歸是相對比較容易的算法,從某種意義上來說,在學習函數的時候已經開始接觸線性回歸了,只不過那個時候並沒有涉及到誤差項,其實在中學的時候就有接觸了,學習的最小二乘法就是啦~~1).對於坐標系中給定的點,我們希望用一條線或是一個類似於:f(x)=θ0+θ1*x1+θ2*x2_...θn*xn 方程來擬合這寫數據點,這就是我們說的回歸了2).這次我們要用的是
  • 初學TensorFlow機器學習:如何實現線性回歸?(附練習題)
    也許就在不久前,誰知道呢——也許你正在上小學,但是已經早早開始了你的機器學習之旅。不管是哪種方式,不管是生物、化學或者物理,一種分析數據的常用技術是用繪圖來觀察一個變量的變化對其它變量的影響。設想你要繪製降雨頻率與農作物產量間的相關性圖。你也許會觀察到隨著降雨量的增加農業生產率也會增加。通過對這些數據擬合一條線,你可以預測不同降雨條件下的農業生產率。
  • 乾貨丨8種用Python實現線性回歸的方法
    那麼,如何用Python來實現線性回歸呢?由於機器學習庫scikit-learn的廣泛流行,常用的方法是從該庫中調用linear_model來擬合數據。雖然這可以提供機器學習的其他流水線特徵(例如:數據歸一化,模型係數正則化,將線性模型傳遞到另一個下遊模型)的其他優點,但是當一個數據分析師需要快速而簡便地確定回歸係數(和一些基本相關統計量)時,這通常不是最快速簡便的方法。下面,我將介紹一些更快更簡潔的方法,但是它們所提供信息量和建模的靈活性不盡相同。
  • python線性回歸
    一.理論基礎1.回歸公式  對於單元的線性回歸,我們有:f(x) = kx + b 的方程(k代表權重,b代表截距)。
  • 用Python實現線性回歸,8種方法哪個最高效?
    即便往前推10年,SVM、boosting等算法也能在準確率上完爆線性回歸。那麼,為什麼我們還需要線性回歸呢?一方面,線性回歸所能夠模擬的關係其實遠不止線性關係。線性回歸中的「線性」指的是係數的線性,而通過對特徵的非線性變換,以及廣義線性模型的推廣,輸出和特徵之間的函數關係可以是高度非線性的。
  • 8種用Python實現線性回歸的方法,究竟哪個方法最高效?
    ,大部分人會立刻想到用sklearn的linear_model,但事實是,Python至少有8種執行線性回歸的方法,sklearn並不是最高效的。在這篇文章中,文摘菌將介紹8種用Python實現線性回歸的方法。了解了這8種方法,就能夠根據不同需求,靈活選取最為高效的方法實現線性回歸。
  • 如何為你的回歸問題選擇最合適的機器學習方法?
    筆者曾寫過一篇<15分鐘帶你入門sklearn與機器學習——分類算法篇>。那麼什麼是回歸呢?回歸分析是一種預測性的建模技術,它研究的是因變量(目標)和自變量(預測器)之間的關係。回歸分析在機器學習領域應用非常廣泛,例如,商品的銷量預測問題,交通流量預測問題。那麼,如何為這些回歸問題選擇最合適的機器學習算法呢?
  • 機器學習算法實踐:標準與局部加權線性回歸
    當然還是從最簡單的線性回歸開始,本文主要介紹無偏差的標準線性回歸和有偏局部加權線性回歸的理論基礎以及相應的Python實現。標準線性回歸標準線性回歸的理論知識很簡單,我們既可以寫出它的標量表達式也可以寫成矩陣的形式,其中矩陣的形式也可以通過投影矩陣進行推到得到。本部分就對標準線性回歸的表達式進行下簡單的推導。
  • 如何為你的回歸問題選擇最合適的機器學習方法 ?
    那麼什麼是回歸呢?回歸分析是一種預測性的建模技術,它研究的是因變量(目標)和自變量(預測器)之間的關係。回歸分析在機器學習領域應用非常廣泛,例如,商品的銷量預測問題,交通流量預測問題。那麼,如何為這些回歸問題選擇最合適的機器學習算法呢?