Python數據分析及可視化實例之披薩餅價格預測(25)
系列文章總目錄:Python數據分析及可視化實例目錄
1.項目背景:
披薩餅的價格和尺寸相關,設計一個學習模型,預測一下尺寸和價格的關係。
數據源,請關注微信公眾號:海豹戰隊,回復:數據
2.分析步驟:
(1) 線性回歸
(2) 多項式回歸
(3) 模型正則化
(4) 評估
3.分析結果:
4.源碼(公眾號:海豹戰隊):
# coding: utf-8n# 親,轉載即同意幫推公眾號:海豹戰隊,嘿嘿......n# 數據源可關注公眾號:海報戰隊,後留言:數據nn# 輸入訓練樣本的特徵以及目標值,分別存儲在變數X_train與y_train之中。nX_train = [[6], [8], [10], [14], [18]]ny_train = [[7], [9], [13], [17.5], [18]]nn# 從sklearn.linear_model中導入LinearRegression。nfrom sklearn.linear_model import LinearRegressionn# 使用默認配置初始化線性回歸模型。nregressor = LinearRegression()n# 直接以披薩的直徑作為特徵訓練模型。nregressor.fit(X_train, y_train)n# 導入numpy並且重命名為np。nimport numpy as npn# 在x軸上從0至25均勻採樣100個數據點。nxx = np.linspace(0, 26, 100)nxx = xx.reshape(xx.shape[0], 1)n# xx.reshape(1,xx.shape[0])[0]n# # 以上述100個數據點作為基準,預測回歸直線。nyy = regressor.predict(xx)n# 對回歸預測到的直線進行作圖。n# import matplotlib.pyplot as pltn# plt.scatter(X_train, y_train)n# plt1, = plt.plot(xx, yy, label="Degree=1")n# plt.axis([0, 25, 0, 25])n# plt.xlabel(Diameter of Pizza)n# plt.ylabel(Price of Pizza)n# plt.legend(handles = [plt1])n# plt.show()nnn# 二多項式回歸n# 從sklearn.preproessing中導入多項式特徵產生器nfrom sklearn.preprocessing import PolynomialFeaturesn# 使用PolynominalFeatures(degree=2)映射出2次多項式特徵,存儲在變數X_train_poly2中。npoly2 = PolynomialFeatures(degree=2)nX_train_poly2 = poly2.fit_transform(X_train)n# 以線性回歸器為基礎,初始化回歸模型。儘管特徵的維度有提升,但是模型基礎仍然是線性模型。nregressor_poly2 = LinearRegression()n# 對2次多項式回歸模型進行訓練。nregressor_poly2.fit(X_train_poly2, y_train)n# 從新映射繪圖用x軸採樣數據。nxx_poly2 = poly2.transform(xx)n# 使用2次多項式回歸模型對應x軸採樣數據進行回歸預測。nyy_poly2 = regressor_poly2.predict(xx_poly2)n# plt.scatter(X_train, y_train)n# plt1, = plt.plot(xx, yy, label=Degree=1)n# plt2, = plt.plot(xx, yy_poly2, label=Degree=2)n# plt.axis([0, 25, 0, 25])n# plt.xlabel(Diameter of Pizza)n# plt.ylabel(Price of Pizza)n# plt.legend(handles = [plt1, plt2])n# plt.show()nn# 輸出2次多項式回歸模型在訓練樣本上的R-squared值。 nprint( The R-squared value of Polynominal Regressor (Degree=2) performing on the training data is, regressor_poly2.score(X_train_poly2, y_train))nnn# 4次多項式回歸n# 從sklearn.preprocessing導入多項式特徵生成器。 nfrom sklearn.preprocessing import PolynomialFeaturesn# 初始化4次多項式特徵生成器。 npoly4 = PolynomialFeatures(degree=4)nnX_train_poly4 = poly4.fit_transform(X_train)nn# 使用默認配置初始化4次多項式回歸器。 nregressor_poly4 = LinearRegression()n# 對4次多項式回歸模型進行訓練。nregressor_poly4.fit(X_train_poly4, y_train)nn# 從新映射繪圖用x軸採樣數據。nxx_poly4 = poly4.transform(xx)n# 使用4次多項式回歸模型對應x軸採樣數據進行回歸預測。nyy_poly4 = regressor_poly4.predict(xx_poly4)nn# 分別對訓練數據點、線性回歸直線、2次多項式以及4次多項式回歸曲線進行作圖。n# plt.scatter(X_train, y_train)n# plt1, = plt.plot(xx, yy, label=Degree=1)n# plt2, = plt.plot(xx, yy_poly2, label=Degree=2)nn# plt4, = plt.plot(xx, yy_poly4, label=Degree=4)n# plt.axis([0, 25, 0, 25])n# plt.xlabel(Diameter of Pizza)n# plt.ylabel(Price of Pizza)n# plt.legend(handles = [plt1, plt2, plt4])n# plt.show()nnprint( The R-squared value of Polynominal Regressor (Degree=4) performing on the training data is,regressor_poly4.score(X_train_poly4, y_train))nnn# 準備測試數據。nX_test = [[6], [8], [11], [16]]ny_test = [[8], [12], [15], [18]]n# 使用測試數據對線性回歸模型的性能進行評估。nregressor.score(X_test, y_test)nnn# 從sklearn.linear_model中導入Lasso。L1nfrom sklearn.linear_model import Lasson# 從使用默認配置初始化Lasso。nlasso_poly4 = Lasso()n# 從使用Lasso對4次多項式特徵進行擬合。nlasso_poly4.fit(X_train_poly4, y_train)n# 對Lasso模型在測試樣本上的回歸性能進行評估。nprint(lasso_poly4.score(X_test_poly4, y_test))nnnn# 從sklearn.linear_model導入Ridge。L2nfrom sklearn.linear_model import Ridgen# 使用默認配置初始化Riedge。nridge_poly4 = Ridge()n# 使用Ridge模型對4次多項式特徵進行擬合。nridge_poly4.fit(X_train_poly4, y_train)nn# 輸出Ridge模型在測試樣本上的回歸性能。nridge_poly4.score(X_test_poly4, y_test)n
膠水語言博大精深,
本主只得一二為新人帶路,
老鳥可去另一專欄:Python中文社區
新手可查閱歷史目錄:
Python數據分析及可視化實例目錄
最後,別只收藏不關注哈
推薦閱讀:
※初探 RSelenium —— 基於豆瓣電影的爬蟲實例
※直播 | Facebook Analytics Manager如何運用300PB海量資料庫?
※如何選擇一份合適的數據科學工作
※如何使用 Python 開始建立你的數據分析項目
※矽谷的數據專家是如何看待大數據的