日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python预测模型_Python多元线性回归-sklearn.linear_model,并对其预测结果评估

發布時間:2025/3/15 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python预测模型_Python多元线性回归-sklearn.linear_model,并对其预测结果评估 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面的博客已經介紹過多元回歸模型,現在這里粗略介紹如下

python 實現案例

1、選取數據

執行代碼#!usr/bin/env?python#_*_?coding:utf-8?_*_import?pandas?as?pdimport?seaborn?as?snsimport?matplotlib.pyplot?as?pltimport?matplotlib?as?mpl???#顯示中文def?mul_lr():

pd_data=pd.read_excel('C:\\Users\\lenovo\\Desktop\\test.xlsx')

print('pd_data.head(10)=\n{}'.format(pd_data.head(10)))

mpl.rcParams['font.sans-serif']?=?['SimHei']??#配置顯示中文,否則亂碼mpl.rcParams['axes.unicode_minus']=False?#用來正常顯示負號,如果是plt畫圖,則將mlp換成pltsns.pairplot(pd_data,?x_vars=['中證500','瀘深300','上證50','上證180'],?y_vars='上證指數',kind="reg",?size=5,?aspect=0.7)

plt.show()#注意必須加上這一句,否則無法顯示。

添加參數kind=”reg”結果,關于畫圖方面可[參考連接]

#####2、構建訓練集與測試級,并構建模型from?sklearn.model_selection?import?train_test_split?#這里是引用了交叉驗證from?sklearn.linear_model?import?LinearRegression??#線性回歸from?sklearn?import?metricsimport?numpy?as?npimport?matplotlib.pyplot?as?pltdef?mul_lr():???#續前面代碼

#剔除日期數據,一般沒有這列可不執行,選取以下數據http://blog.csdn.net/chixujohnny/article/details/51095817

X=pd_data.loc[:,('中證500','瀘深300','上證50','上證180')]

y=pd_data.loc[:,'上證指數']

X_train,X_test,?y_train,?y_test?=?train_test_split(X,y,test_size?=?0.2,random_state=100)????print?('X_train.shape={}\n?y_train.shape?={}\n?X_test.shape={}\n,??y_test.shape={}'.format(X_train.shape,y_train.shape,?X_test.shape,y_test.shape))

linreg?=?LinearRegression()

model=linreg.fit(X_train,?y_train)????print?(model)????#?訓練后模型截距

print?(linreg.intercept_)????#?訓練后模型權重(特征個數無變化)

print?(linreg.coef_)

feature_cols?=?['中證500','瀘深300','上證50','上證180','上證指數']

B=list(zip(feature_cols,linreg.coef_))????print(B)

3、模型預測#預測

y_pred?=?linreg.predict(X_test)????print?(y_pred)?#10個變量的預測結果

4、模型評估#評價

#(1)?評價測度

#?對于分類問題,評價測度是準確率,但這種方法不適用于回歸問題。我們使用針對連續數值的評價測度(evaluation?metrics)。

#?這里介紹3種常用的針對線性回歸的測度。

#?1)平均絕對誤差(Mean?Absolute?Error,?MAE)

#?(2)均方誤差(Mean?Squared?Error,?MSE)

#?(3)均方根誤差(Root?Mean?Squared?Error,?RMSE)

#?這里我使用RMES。

sum_mean=0

for?i?in?range(len(y_pred)):

sum_mean+=(y_pred[i]-y_test.values[i])**2

sum_erro=np.sqrt(sum_mean/10)??#這個10是你測試級的數量

#?calculate?RMSE?by?hand

print?("RMSE?by?hand:",sum_erro)????#做ROC曲線

plt.figure()

plt.plot(range(len(y_pred)),y_pred,'b',label="predict")

plt.plot(range(len(y_pred)),y_test,'r',label="test")

plt.legend(loc="upper?right")?#顯示圖中的標簽

plt.xlabel("the?number?of?sales")

plt.ylabel('value?of?sales')

plt.show()

附錄:

相應的參數說明。

fit_intercept: 布爾型,默認為true

說明:是否對訓練數據進行中心化。如果該變量為false,則表明輸入的數據已經進行了中心化,在下面的過程里不進行中心化處理;否則,對輸入的訓練數據進行中心化處理

normalize布爾型,默認為false

說明:是否對數據進行標準化處理

copy_X 布爾型,默認為true

說明:是否對X復制,如果選擇false,則直接對原數據進行覆蓋。(即經過中心化,標準化后,是否把新數據覆蓋到原數據上)

**n_jobs整型, 默認為1

說明:計算時設置的任務個數(number of jobs)。如果選擇-1則代表使用所有的CPU。這一參數的對于目標個數>1(n_targets>1)且足夠大規模的問題有加速作用。

返回值:

coef_ ?數組型變量, 形狀為(n_features,)或(n_targets, n_features)

說明:對于線性回歸問題計算得到的feature的系數。如果輸入的是多目標問題,則返回一個二維數組(n_targets, n_features);如果是單目標問題,返回一個一維數組 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (n_features,)。

intercept_ ? ? ? ?數組型變量

說明:線性模型中的獨立項。

注:該算法僅僅是scipy.linalg.lstsq經過封裝后的估計器。

方法:

decision_function(X) ?對訓練數據X進行預測

fit(X, y[, n_jobs]) ? ? ? ? ? ? ? ? ? ? 對訓練集X, y進行訓練。是對scipy.linalg.lstsq的封裝

get_params([deep]) 得到該估計器(estimator)的參數。

predict(X) 使用訓練得到的估計器對輸入為X的集合進行預測(X可以是測試集,也可以是需要預測的數據)。

score(X, y[,]sample_weight) ? 返回對于以X為samples,以y為target的預測效果評分。

set_params(**params) ? ? ? ? ? ?設置估計器的參數

decision_function(X) 和predict(X)都是利用預估器對訓練數據X進行預測,其中decision_function(X)包含了對輸入數據的類型檢查,以及當前對象是否存在coef_屬性的檢查,是一種“安全的”方法,而predict是對decision_function的調用。

score(X, y[,]sample_weight) ? ?定義為(1-u/v),其中u = ((y_true - y_pred)**2).sum(),而v=((y_true-y_true.mean())**2).mean()

最好的得分為1.0,一般的得分都比1.0低,得分越低代表結果越差。

其中sample_weight為(samples_n,)形狀的向量,可以指定對于某些sample的權值,如果覺得某些數據比較重要,可以將其的權值設置的大一些。

例子:from?sklearn?import?linear_model

clf?=?linear_model.LinearRegression()

clf.fit?([[0,?0],?[1,?1],?[2,?2]],?[0,?1,?2])

LinearRegression(copy_X=True,?fit_intercept=True,?n_jobs=1,?normalize=False)

clf.coef_

array([?0.5,??0.5])

總結

以上是生活随笔為你收集整理的python预测模型_Python多元线性回归-sklearn.linear_model,并对其预测结果评估的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。