機器學習中回歸分析(多變量)


回歸分析好久都沒有了解了。下面再復習下。

**1.波士頓房產數據(完整)**
通過如下代碼即可獲取所有數據

```
from sklearn.datasets import load_boston
boston = load_boston()
print (boston.DESCR)

```

 



波士頓房價數據集(Boston House Price Dataset)包含對房價的預測,以千美元計,給定的條件是  房屋及其相鄰房屋的詳細信息。
該數據集是一個回歸問題。每個類的觀察值數量是均等的,共有 506 個觀察,13 個輸入變量和1個輸  出變量。
sklearn庫的datasets包含該數據集( load_boston)
CRIM:城鎮人均犯罪率。
ZN:住宅用地超過 25000 sq.ft. 的比例。
INDUS:城鎮非零售商用土地的比例。
CHAS:查理斯河空變量(如果邊界是河流,則為1;否則為0)。
NOX:一氧化氮濃度。
RM:住宅平均房間數。
AGE:1940 年之前建成的自用房屋比例。
DIS:到波士頓五個中心區域的加權距離。
RAD:輻射性公路的接近指數。
TAX:每 10000 美元的全值財產稅率。
PTRATIO:城鎮師生比例。
B:1000(Bk-0.63)^ 2,其中 Bk 指代城鎮中黑人的比例。
LSTAT:人口中地位低下者的比例。

MEDV:自住房的平均房價,以千美元計。

** 1.
波士頓房產數據(完整) **
通過如下代碼即可獲取所有數據

```
from sklearn.datasets import load_boston

boston = load_boston()
print(boston.DESCR)

```

 


波士頓房價數據集(Boston
House
Price
Dataset)包含對房價的預測,以千美元計,給定的條件是
房屋及其相鄰房屋的詳細信息。
該數據集是一個回歸問題。每個類的觀察值數量是均等的,共有
506
個觀察,13
個輸入變量和1個輸
出變量。
sklearn庫的datasets包含該數據集( load_boston)
CRIM:城鎮人均犯罪率。
ZN:住宅用地超過
25000
sq.ft.的比例。
INDUS:城鎮非零售商用土地的比例。
CHAS:查理斯河空變量(如果邊界是河流,則為1;否則為0)。
NOX:一氧化氮濃度。
RM:住宅平均房間數。
AGE:1940
年之前建成的自用房屋比例。
DIS:到波士頓五個中心區域的加權距離。
RAD:輻射性公路的接近指數。
TAX:每
10000
美元的全值財產稅率。
PTRATIO:城鎮師生比例。
B:1000(Bk - 0.63) ^ 2,其中
Bk
指代城鎮中黑人的比例。
LSTAT:人口中地位低下者的比例。

MEDV:自住房的平均房價,以千美元計。

** 2.
實現多變量線性回歸 **
下面給出代碼

```
from sklearn.svm import SVR  # 構建支持向量回歸所需的SVR模型
from numpy import *
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler  # 用於數據預處理的數據放縮函數

house_dataset = datasets.load_boston()  # 加載波士頓房價數據集
house_data = house_dataset.data  # 加載房屋屬性參數
house_price = house_dataset.target  # 加載房屋均價
house_dataset = datasets.load_boston()
house_data = house_dataset.data
house_price = house_dataset.target
x_train, x_test, y_train, y_test = train_test_split(house_data, house_price, test_size=0.2)
scaler = StandardScaler()
# 在數據模型建立時,只能使用訓練組數據,因此使用訓練組數據的標准差進行標准化
scaler.fit(x_train)
# 對訓練組和測試組的輸入數據進行標准化,即f(訓練組或測試組數據)=(訓練組或測試組數據-訓練組或測試組平均值)/訓練組標准差
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
house_dataset = datasets.load_boston()
house_data = house_dataset.data
house_price = house_dataset.target
x_train, x_test, y_train, y_test = train_test_split(house_data, house_price, test_size=0.2);
scaler = StandardScaler()
scaler.fit(x_train)
x_train = scaler.transform(x_train)
x_test = scaler.transform(x_test)
svr = SVR(kernel='rbf')  # 構建基於rbf(徑向基函數)的SVR模型
svr.fit(x_train, y_train)  # 將訓練組數據輸入進行訓練
y_predict = svr.predict(x_test)  # 將處理過的預測組數據輸入進行預測,得出結果
# 將實際結果與預測結果對比觀察,2列的數組,左邊列是實際結果,右邊列是預測結果
result = hstack((y_test.reshape(-1, 1), y_predict.reshape(-1, 1)))
print(result)
```

 



** 3.
網格搜索調參 **
Grid
Search:一種調參手段;窮舉搜索:在所有候選的參數選擇中,通過循環遍歷,嘗試每一種可能性,表現最好的參數就是最終的結果。其原理就像是在數組里找最大值。(為什么叫網格搜索?以有兩個參數的模型為例,參數a有3種可能,參數b有4種可能,把所有可能性列出來,可以表示成一個3 * 4
的表格,其中每個cell就是一個網格,循環過程就像是在每個網格里遍歷、搜索,所以叫grid
search

```
from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_sp(iris.data, iris.target, random_state=0)
print("Size of training set:{} size of testing set:{}".format(X_train.shape[0], X_test.shape[
    0]))  #### grid search startbest_score = 0for gamma in [0.001,0.01,0.1,1,10,100]: for C in [0.001,0.01,0.1,1,10,100]: svm = SVC(gamma=gamma,C=C)#對於每種參數可能的組合,進行一次訓練; svm.fit(X_train,y_train) score = svm.score(X_test,y_test) if score > best_score:#找到表現最好的參數 best_score = score best_parameters = {'gamma':gamma,'C':C}#### grid search end print("Best score:{:.2f}".format(best_score))print("Best parameters:{}".format(best_parameters)) Size of training set:112 size of testing set:38
Best
score: 0.973684
Best
parameters: {'gamma': 0.001, 'C': 100}

```

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM