python利用機器學習方法建立線性回歸模型

2021-09-10 09:40:50 字數 2297 閱讀 7623

import sys

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

from sklearn import linear_model

#1.定義線性回歸函式

def linearmodel(data):#data:資料集

features=['x']#特徵名列表

labels=['y']#標籤名列表

train_data=data[:15]#取前14行為訓練集

test_data=data[15:]#取剩餘為測試集

model=train_model(train_data,features,labels)#訓練模型

error,score=evaluate_model(model,test_data,features,labels)#模型評價,error:均方差,score:決定係數

visualize_model(model,data,features,labels,error,score)#模型視覺化

#2.定義模型訓練函式

def train_model(train_data,features,labels):

model=linear_model.linearregression()

model.fit(train_data[features],train_data[labels])

return model

#3.定義模型評價函式

def evaluate_model(model,test_data,features,labels):

error=np.mean((model.predict(test_data[features])-test_data[labels])**2)

score=model.score(test_data[features],test_data[labels])

error=("%.3f" % error[0])#保留小數點後三位

print('均方差為:',error)

score=("%.3f" % score)

print('決定係數為:',score)

coef=("%.3f" % model.coef_)

intercept=("%.3f" % model.intercept_)

if model.intercept_<0:#判斷所**截距的正負

print('**模型為:y={}x{}'.format(str(coef),str(intercept)))

else:

print('**模型為:y={}x+{}'.format(str(coef),str(intercept)))

return error,score

#4.定義模型視覺化函式

def visualize_model(model,data,features,labels,error,score):

fig=plt.figure(figsize=(8,8),dpi=100)#建立圖形框

ax=fig.add_subplot(111)#框中畫一張圖

ax.set_xlabel('$x$')

ax.set_ylabel('$y$')

ax.scatter(data[features],data[labels],color='b')#繪製原始資料散點圖

ax.plot(data[features],model.predict(data[features]),color='r')#繪製模型**直線

plt.show()

#定義主函式

if __name__=='__main__':

path='d:/date.csv'

data=pd.read_csv(path)#讀取資料集

linearmodel(data)#線性回歸

程式執行結果為:

可見,該**模型可代表資料集中82.8%的資料。由於模型的評估與均方差和決定係數大小有關,且均方差越小越好,決定係數越接近於1越好,通過調整訓練集和資料集的資料發現:

train_data=data[:14]

test_data=data[14:]

時**結果較好,為:

機器學習方法

根據資料型別的不同,對乙個問題的建模有不同的方式。在機器學習或者人工智慧領域,人們首先會考慮演算法的學習方式。在機器學習領域,有幾種主要的學習方式。將演算法按照學習方式分類是乙個不錯的想法,這樣可以讓人們在建模和演算法選擇的時候考慮能根據輸入資料來選擇最合適的演算法來獲得最好的結果。監督式學習 在監...

機器學習方法 機器學習模型評估方法

通常我們採用實驗測試的方法對模型的泛化誤差做出評估。為此我們就需要乙個測試集用來測試訓練好的模型。通常情況下,在我們拿到資料之後,在正式開始訓練模型前,就會將資料劃分為訓練集合測試集。需要注意的是 訓練集與測試集應盡可能互斥,也就是盡量不要重複。測試集要符合真實樣本的分布,也就是說在劃分時要隨機抽樣...

機器學習方法 機器學習中的優化方法

機器學習是離不開優化方法的,pedro domingos這樣概括機器學習和優化方法的關係 machine learning representation optimization evaluation 後面三項對應於三步 建立模型,求解模型,驗證模型。首先介紹一下機器學習中常見的優化問題 1.分類回...