> 如下內容是我在學習https://blog.csdn.net/mingxiaod/article/details/85938251 教程時遇到不懂的問題本身查詢並理解的筆記,因爲sklearn版本更迭改動了原做者的代碼,若有理解誤差歡迎指正。數組
1. np.linspace app
np.linspace(1,10) 在numpy中生成一個等差數列,能夠加三個參數,np.linspace(1,10,10)在是兩個參數時默認生成五十個數字的等差數列,第一第二哥數字分別表明數列的開頭和結尾,若是是三哥參數,第三個參數表明等差數列的長度,既能夠生成一個長度爲10數字開頭爲1結尾爲10的等差數列(1,2,3,4,5,6,7,8,9,10)dom
2. plt.subplot(nrows, ncols, index, **kwargs)學習
plt.subploy(2,3,5)這個代碼的核心意思就是使用」整數來描述子圖的位置信息「,顧名思義就是在一個畫布中畫多個圖片,第一個參數nrows表明你把畫布分爲多少行,ncols表明你把畫布分爲多少列,index就更好理解了,它的意思就是接下來要畫的圖的索引位置,好比(2,3,5)他表明的意思就是把一張空白的畫布分爲兩行,三列。六個位置區域,第三個索引參數通常就是從左上角開始到右下角依次編號(以下圖),我查閱資料的時候有的博主強行機器翻譯官方文檔,並註明第三個參數不能大於10,其實否則,官方的意思是index<= nrows*ncols,也就是索引數字不能大於已有的畫布分割數量。還有就是(2,3,5)與(235)效果等同,至於第三個參數**kwargs,做用是設置子圖類型,極點圖或線型圖。spa
3.np.delete(x_data,abnormal_data,axis = 0).net
第一個參數表明要處理的數據矩陣,第二個參數表明在什麼位置處理(通常爲一維數組),第三個參數 0 表明刪除所在列,1表明刪除所在行。翻譯
1 from sklearn import preprocessing 2 from sklearn.datasets import load_boston 3 from sklearn.metrics import r2_score 4 from sklearn.linear_model import LinearRegression 5 from sklearn.model_selection import train_test_split 6 import matplotlib.pyplot as plt 7 import numpy as np 8 9 #數據初始化 10 dataset = load_boston() 11 x_data,y_data=load_boston(return_X_y = True) #導入數據,x_data爲特徵變量、y_data爲目標值 12 print("--------------'''獲取自變量數據的形狀'''--------------") 13 print(x_data.shape) 14 print(y_data.shape) 15 name_data = dataset.feature_names #導入特證名 16 17 #數據可視化 18 for i in range(len(name_data)): 19 plt.scatter(x_data[:,i],y_data,s = 20,marker = '<',c = 'r') 20 plt.title(name_data[i]) 21 plt.show() 22 #處理異常數據 23 abnormal_data = [] 24 for i in range(len(y_data)): 25 if y_data[i] == 50: 26 abnormal_data.append(i)#存儲異常值的下標; 27 x_data = np.delete(x_data,abnormal_data,axis = 0)#刪除值爲y值爲50的特徵變量所在行 28 y_data = np.delete(y_data,abnormal_data,axis = 0)#刪除值爲y值爲50的特徵值所在行 29 print("------檢測-------") 30 print(x_data.shape) 31 print(y_data.shape) 32 33 abnormal_title = [] 34 for i in range(len(name_data)): 35 if name_data[i] == 'RM' or name_data[i] =='PTRATIO'or name_data[i] == 'LSTAT': 36 continue 37 else: 38 abnormal_title.append(i)#存儲不相關數據特證名下標 39 x_data = np.delete(x_data,abnormal_title,axis = 1)#刪除不相關數據所在列 40 print("--------------'''輸出有效數據形狀'''--------------") 41 print(x_data.shape) 42 print(y_data.shape) 43 44 #數據分割 45 x_train,x_test = train_test_split(x_data,test_size=0.2,random_state=0) 46 y_train,y_test = train_test_split(y_data,test_size=0.2,random_state=0) 47 print("--------------'''輸出實驗數據長度'''--------------") 48 print(len(x_train)) 49 print(len(x_test)) 50 print(len(y_train)) 51 print(len(y_test)) 52 53 #數據歸一化(無量綱化處理β=(x-min(x))/max(x)-min(x),將數據歸集到0~1之間) 54 min_max_scaler = preprocessing.MinMaxScaler() 55 x_test = min_max_scaler.fit_transform(x_test) 56 x_train = min_max_scaler.fit_transform(x_train) 57 y_train = min_max_scaler.fit_transform(y_train.reshape(-1,1)) 58 y_test = min_max_scaler.fit_transform(y_test.reshape(-1,1))#轉化爲一列行自動確認 59 #模型訓練和評估 60 lr = LinearRegression() 61 lr.fit(x_train,y_train) 62 lr_y_predict = lr.predict(x_test) 63 #使用r2_score預測樣本 64 score = r2_score(y_test, lr_y_predict) 65 print("樣本預測得分:{}".format(score))
輸出結果:code
--------------'''獲取自變量數據的形狀'''-------------- (506, 13) (506,) ------檢測------- (490, 13) (490,) --------------'''輸出有效數據形狀'''-------------- (490, 3) (490,) --------------'''輸出實驗數據長度'''-------------- 392 98 392 98 樣本預測得分:0.7091901425426