需求:對糖尿病數據集進行回歸分析,以便對未知數據進行預測。
數據集Diabetes:1.包含442個患者的10個生理特征
2.10個特征變量數據均已進行規范化
數據集描述:
# 加載數據集 diabetes = datasets.load_diabetes() # 顯示其描述 print("【DESCR】\n", diabetes.DESCR)
完整代碼:
from sklearn import datasets from sklearn import linear_model from sklearn.model_selection import train_test_split # 引入均方誤差 from sklearn.metrics import mean_squared_error # 加載糖尿病數據集 diabetes = datasets.load_diabetes() # 得到糖尿病特征向量集 data = diabetes.data # 數據探索 print(data.shape) # 查看數據第0行數據 print(data[0]) # 訓練集 70%,測試集30%(diabetes.data是全數據集的特征,diabetes.target是全數據集的標簽) # random_state=14 控制每次隨機的結果都是一樣的,數字大小沒有規定,只有有個數就行 # 當然不同的數字隨機的結果是不一樣的 train_x, test_x, train_y, test_y = train_test_split(diabetes.data, diabetes.target, test_size=0.3, random_state=14) print(len(train_x)) # 回歸訓練及預測(線性回歸模型) clf = linear_model.LinearRegression() # 擬合訓練集的特征和標簽,來學習得到模型參數 clf.fit(train_x, train_y) # 訓練出的線性模型的系數(每條數據有10個不同的特征,但對應着同一個y值,所以有10個線性模型,即有10個系數) print(clf.coef_) # print(train_x.shape) # print(clf.score(test_x, test_y)) # 計算預測結果 pred_y = clf.predict(test_x) # 計算均方誤差(損失值) print(mean_squared_error(test_y, pred_y)) # 通過決定系數來來判斷回歸方程的擬合程度(分數越高說明擬合的程度越好) r_sq = clf.score(train_x, train_y) # 確定系數 print('r_sq:', r_sq)
運行結果:
今天陰天,同時伴隨着淅淅瀝瀝的小雨,喜歡下雨的聲音......