机器学习之多元线性回归问题综合应用示例:简单案例+解决红酒质量的判断问题
補(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指的到底是什么!!具體看下
可以看到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è)試代碼,不全,中間一直在刪減,只作為參考
總結(jié)
以上是生活随笔為你收集整理的机器学习之多元线性回归问题综合应用示例:简单案例+解决红酒质量的判断问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: APP移动应用安全加固是如何进行的?
- 下一篇: 【边缘设备】nanoPC-T4 挂载NV