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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习之多元线性回归问题综合应用示例:简单案例+解决红酒质量的判断问题

發布時間:2024/1/1 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习之多元线性回归问题综合应用示例:简单案例+解决红酒质量的判断问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

補博客持續更新中🤟🤟🤟🤟🤟不斷更不斷更🙌🙌🙌


文章目錄

  • 簡單案例來啦
  • 紅酒質量的判斷問題
    • 讀入數據
    • 用散點圖考察個別數據關系
    • 得到所有的變量X和變量Y
    • 先選擇一個簡單模型進行擬合和評估
    • 詳細評估(交叉驗證)
    • 多模型的嘗試和選擇

簡單案例來啦

下面舉一個簡單的例子哈🍯🍯🍯

import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.preprocessing import PolynomialFeaturesX_train = [[6], [8], [10], [14], [18]] y_train = [[7], [9], [13], [17.5], [18]] X_test = [[6], [8], [11], [16]] y_test = [[8], [12], [15], [18]] regressor = LinearRegression() ##沒有任何處理,默認一元線性模型 regressor.fit(X_train, y_train) ##這里可以看到我們是直接fit的,沒有做任何處理 xx = np.linspace(0, 26, 100)##np.linspace()在這里指的是從0開始,到26結束,這段區間內,取100個樣本數量yy = regressor.predict(xx.reshape(xx.shape[0], 1)) plt.plot(xx, yy) ##得到類似y=x這種結果的圖像quadratic_featurizer = PolynomialFeatures(degree=2) ##用加強版 X_train_quadratic = quadratic_featurizer.fit_transform(X_train) X_test_quadratic = quadratic_featurizer.transform(X_test)##這兩步很重要!!X_train當然是要fit_transform的,但是別忘了X_test也要transform!!!regressor_quadratic = LinearRegression() regressor_quadratic.fit(X_train_quadratic, y_train) xx_quadratic = quadratic_featurizer.transform(xx.reshape(xx.shape[0], 1)) ##格式問題啦 plt.plot(xx, regressor_quadratic.predict(xx_quadratic), c='r', linestyle='--') plt.title('Pizza price regressed on diameter') plt.xlabel('Diameter in inches') plt.ylabel('Price in dollars') plt.axis([0, 25, 0, 25]) plt.grid(True) plt.scatter(X_train, y_train) ##散點圖,也就是下面的藍色點 plt.show() print(X_train) print(X_train_quadratic) print(X_test) print(X_test_quadratic) print('Simple linear regression r-squared', regressor.score(X_test, y_test)) print('Quadratic regression r-squared', regressor_quadratic.score(X_test_quadratic, y_test))


可以看到用多項式回歸得到的曲線更加接近目標點🌭
可以試著嘗試更高階的多項式:下面測試4階、9階
4階:

9階:


可以看到更加接近目標點了!!還是那句話,這個東西不是你的degree越高,效果就越好的,只是大部分情況下可能是這樣,但是有時候可能degree=9的情況還不如degree=1的情況,所以這個東西沒有絕對!🍙🍗🍚

紅酒質量的判斷問題

這個數據集呢是我老師上課的時候的,所以我也沒有,但是主要是學習這個過程,然后應用到自己已有的數據集上就行了🥪
本項目數據集的地址:
/data/shixunfiles/ddca0fd2b1025671866a9344eca4dac7_1633960156078.csv

讀入數據

##魔法命令 %matplotlib inline import numpy as np import pandas as pd # 讀入數據 filename = '/data/shixunfiles/ddca0fd2b1025671866a9344eca4dac7_1633960156078.csv' df = pd.read_csv(filename)##不需要加sep=";" df.describe()


委屈大家看看啦

用散點圖考察個別數據關系

import matplotlib.pyplot as plt plt.scatter(df['酒精'],df['質量等級']) ##用散點,得到對應的列的所有的值 plt.xlabel('Alcohol') plt.ylabel('Quality') plt.title('Alcohol Against Quality') plt.show()

得到所有的變量X和變量Y

columns = list(df.columns) print(columns)

output:
[‘固定酸’, ‘揮發性酸’, ‘檸檬酸’, ‘糖分’, ‘氯化物’, ‘游離二氧化硫’, ‘總二氧化硫’, ‘密度’, ‘pH值’, ‘硫酸鹽’, ‘酒精’, ‘質量等級’]
?????在這里要區分一個非常重要的東西,也是一個很重要的點就是對于拿到像類似上述那樣的數據集的時候,多個變量的,我們拿到的X和y指的到底是什么!!具體看下

# ========= begin ======== X = df[list(df.columns)[:-1]] y = df[list(df.columns)[-1]] print(X) print(y)



可以看到X是一個二維數組,y是一個一維數組!不要搞亂了!!???

先選擇一個簡單模型進行擬合和評估

既然是選擇簡單的模型,那當然是選擇——簡單線性模型啦,得到score

from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2) model = LinearRegression() model.fit(X_train,y_train) score = model.score(X_test,y_test) print(score)


這個結果可以用“慘不忍睹”來形容💔
打個圖給大家看:

詳細評估(交叉驗證)

# ========= begin ========from sklearn.model_selection import cross_val_score from sklearn.model_selection import ShuffleSplit scores = cross_val_score(model,X,y,cv = ShuffleSplit(n_splits = 10,test_size=0.2)) print(scores)


看看上面值的平均值和方差:

好了那么“一點點”

多模型的嘗試和選擇

最后一步了,那就是如何找到合適的模型和預處理方式,這一步來說的話呢,就是自己去找到合適的模型和預處理方式:
提示:
預處理可選 PolynomialFeatures 和/或 StandardScaler;
模型可選擇 LinearRegression、Ridge、Lasso 或 SGDRegressor 等;
建議用管道方便處理;
用 cross_val_score 結合 ShuffleSplit 進行交叉驗證。
這一部分就是自己玩兒啦,提供一下我的測試代碼,不全,中間一直在刪減,只作為參考

# ========= begin ======== ##導入好要用的庫文件 from sklearn.linear_model import LinearRegression from sklearn.linear_model import Lasso from sklearn.linear_model import Ridge from sklearn.preprocessing import PolynomialFeatures from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline from sklearn.model_selection import cross_val_score from sklearn.model_selection import ShuffleSplit from sklearn.model_selection import train_test_split from sklearn.linear_model import SGDRegressor import numpy as np ##預處理函數 得到模型 def polynomial_model(degree=1):polynomial_features = PolynomialFeatures(degree=degree)ridge = Ridge()pipeline = Pipeline([("polynomial_features",polynomial_features),(" ridge", ridge)])return pipeline ## 先來個簡單的 ##交叉驗證----隨機打亂10次 8/2開 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)model = polynomial_model(degree=2) scores = cross_val_score(model,X_train,y_train,cv =5 ) ##test_size=0.8 print(scores) scores_mean = np.mean(scores) scores_std = np.std(scores) print(scores_mean) print(scores_std) # for i in range(1,5): # pip = polynomial_model(i) # pip.fit(X_train,y_train) # train_score = pip.score(X_train, y_train) # cv_score = pip.score(X_test, y_test)# print('train_score: {0:0.6f}; cv_score: {1:.6f}'.format(train_score, cv_score)) # print("********************************")

總結

以上是生活随笔為你收集整理的机器学习之多元线性回归问题综合应用示例:简单案例+解决红酒质量的判断问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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