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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

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

補(bǔ)博客持續(xù)更新中🤟🤟🤟🤟🤟不斷更不斷更🙌🙌🙌


文章目錄

  • 簡(jiǎn)單案例來(lái)啦
  • 紅酒質(zhì)量的判斷問(wèn)題
    • 讀入數(shù)據(jù)
    • 用散點(diǎn)圖考察個(gè)別數(shù)據(jù)關(guān)系
    • 得到所有的變量X和變量Y
    • 先選擇一個(gè)簡(jiǎn)單模型進(jìn)行擬合和評(píng)估
    • 詳細(xì)評(píng)估(交叉驗(yàn)證)
    • 多模型的嘗試和選擇

簡(jiǎn)單案例來(lái)啦

下面舉一個(gè)簡(jiǎn)單的例子哈🍯🍯🍯

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() ##沒(méi)有任何處理,默認(rèn)一元線(xiàn)性模型 regressor.fit(X_train, y_train) ##這里可以看到我們是直接fit的,沒(méi)有做任何處理 xx = np.linspace(0, 26, 100)##np.linspace()在這里指的是從0開(kāi)始,到26結(jié)束,這段區(qū)間內(nèi),取100個(gè)樣本數(shù)量yy = regressor.predict(xx.reshape(xx.shape[0], 1)) plt.plot(xx, yy) ##得到類(lèi)似y=x這種結(jié)果的圖像quadratic_featurizer = PolynomialFeatures(degree=2) ##用加強(qiáng)版 X_train_quadratic = quadratic_featurizer.fit_transform(X_train) X_test_quadratic = quadratic_featurizer.transform(X_test)##這兩步很重要!!X_train當(dāng)然是要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)) ##格式問(wèn)題啦 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) ##散點(diǎn)圖,也就是下面的藍(lán)色點(diǎn) 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))


可以看到用多項(xiàng)式回歸得到的曲線(xiàn)更加接近目標(biāo)點(diǎn)🌭
可以試著嘗試更高階的多項(xiàng)式:下面測(cè)試4階、9階
4階:

9階:


可以看到更加接近目標(biāo)點(diǎn)了!!還是那句話(huà),這個(gè)東西不是你的degree越高,效果就越好的,只是大部分情況下可能是這樣,但是有時(shí)候可能degree=9的情況還不如degree=1的情況,所以這個(gè)東西沒(méi)有絕對(duì)!🍙🍗🍚

紅酒質(zhì)量的判斷問(wèn)題

這個(gè)數(shù)據(jù)集呢是我老師上課的時(shí)候的,所以我也沒(méi)有,但是主要是學(xué)習(xí)這個(gè)過(guò)程,然后應(yīng)用到自己已有的數(shù)據(jù)集上就行了🥪
本項(xiàng)目數(shù)據(jù)集的地址:
/data/shixunfiles/ddca0fd2b1025671866a9344eca4dac7_1633960156078.csv

讀入數(shù)據(jù)

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


委屈大家看看啦

用散點(diǎn)圖考察個(gè)別數(shù)據(jù)關(guān)系

import matplotlib.pyplot as plt plt.scatter(df['酒精'],df['質(zhì)量等級(jí)']) ##用散點(diǎn),得到對(duì)應(yīng)的列的所有的值 plt.xlabel('Alcohol') plt.ylabel('Quality') plt.title('Alcohol Against Quality') plt.show()

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

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

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

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



可以看到X是一個(gè)二維數(shù)組,y是一個(gè)一維數(shù)組!不要搞亂了!!???

先選擇一個(gè)簡(jiǎn)單模型進(jìn)行擬合和評(píng)估

既然是選擇簡(jiǎn)單的模型,那當(dāng)然是選擇——簡(jiǎn)單線(xiàn)性模型啦,得到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)


這個(gè)結(jié)果可以用“慘不忍睹”來(lái)形容💔
打個(gè)圖給大家看:

詳細(xì)評(píng)估(交叉驗(yàn)證)

# ========= 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)


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

好了那么“一點(diǎn)點(diǎn)”

多模型的嘗試和選擇

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

# ========= begin ======== ##導(dǎo)入好要用的庫(kù)文件 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 ##預(yù)處理函數(shù) 得到模型 def polynomial_model(degree=1):polynomial_features = PolynomialFeatures(degree=degree)ridge = Ridge()pipeline = Pipeline([("polynomial_features",polynomial_features),(" ridge", ridge)])return pipeline ## 先來(lái)個(gè)簡(jiǎn)單的 ##交叉驗(yàn)證----隨機(jī)打亂10次 8/2開(kāi) 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("********************************")

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。