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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

线性回归实战---Abalone鲍鱼年龄预测

發布時間:2024/1/8 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性回归实战---Abalone鲍鱼年龄预测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線性回歸實現Abalone鮑魚年齡預測

文章目錄

  • 線性回歸實現Abalone鮑魚年齡預測
    • 一、環境準備
        • 數據集簡介
    • 二、線性回歸基礎知識
        • 什么是線性回歸?
        • “最小二乘法” 求解線性回歸問題
    • 三、Python代碼
    • 四、結果分析

前面我們使用手動編寫,后面通過sklearn第三方庫來與我們手寫的模型進行對比

一、環境準備

原始數據集下載及說明:https://archive.ics.uci.edu/ml/datasets/abalone

Python 3.9.13+PyCharm 2022.2.3 (Professional Edition) 或者 jupyter什么的自己選擇

sklearn==1.1.3 pip install -U scikit-learn

數據集簡介

官方的文檔介紹如下:

從中我們可以看到原始數據集共有4177條數據,其中每條數據包含9個特征,見下表

名稱數據類型測量單位描述
性別標稱M、F和I(嬰兒)
長度連續mm最長外殼測量
直徑連續mm垂直于長度
高度連續mm殼中有肉
全重連續g整只鮑魚
屠宰重量連續g肉的重量
內臟重量連續g腸道重量(出血后)
殼重連續g干燥后
Ringsinteger+1.5表示年齡(年)

同樣的,我們還是可以不用太關心這些特征是什么并不影響我們后面對鮑魚年齡的預測.

二、線性回歸基礎知識

什么是線性回歸?

在統計學中,線性回歸(Linear Regression)是利用稱為線性回歸方程的最小平方函數對一個或多個自變量和因變量之間關系進行建模的一種回歸分析。這種函數是一個或多個稱為回歸系數的模型參數的線性組合。只有一個自變量的情況稱為簡單回歸,大于一個自變量情況的叫做多元回歸。


“最小二乘法” 求解線性回歸問題


推薦參考: 用人話講明白線性回歸LinearRegression

三、Python代碼

# -*- coding: utf-8 -*- # @Author : yxn # @Date : 2022/11/12 18:49 # @IDE : PyCharm(2022.2.3) Python3.9.13 import numpy as np from scipy.stats import pearsonr from sklearn import linear_modelclass LinearRegression:"""手動實現線性回歸模型的LinearRegression類"""def __init__(self):self.w = None # 增廣權重向量self.n_features = None # 用于存儲樣本屬性的數量def fit(self, X, y):"""在進行異常判斷之后,將樣本轉化為增廣特征向量,然后使用公式w=(X^TX)^{-1}X^Ty,利用numpy的dot與linalg.inv函數,實現最小二乘法。(需要判斷樣本數量是否大于屬性數量):param X: 訓練屬性集X訓:param y: 練標簽集y:return: 最優參數w"""assert isinstance(X, np.ndarray) and isinstance(y, np.ndarray) # assert(斷言)用于判斷輸入值是否異常assert X.ndim == 2 and y.ndim == 1assert y.shape[0] == X.shape[0]n_samples = X.shape[0]self.n_features = X.shape[1]extra = np.ones((n_samples,))X = np.c_[X, extra]if self.n_features < n_samples:self.w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y) # 使用最小二乘法求權重w,np.linalg.inv:求逆矩陣else:raise ValueError('dont have enough samples')def predict(self, X):"""用于執行測試,輸入測試樣本集,轉化成增廣特征向量,返回預測標簽。:param X: 測試屬性集X:return: 預測標簽y_"""n_samples = X.shape[0]extra = np.ones((n_samples,))X = np.c_[X, extra]if self.w is None:raise RuntimeError('cant predict before fit')y_ = X.dot(self.w)return y_def loadDataSet(fileName):"""數據集每一行為一個樣本,其中最后一個值為標簽,其余值為屬性。根據文件名,依次讀取每一行,將屬性與標簽轉化為float類型,存儲在列表中,再存入屬性集xArr,標簽集yArr:param fileName: 數據集文件名fileName:return: 屬性集xArr,標簽集yArr(轉化成numpy的array類型)"""numFeat = len(open(fileName).readline().split('\t')) - 1xArr = []yArr = []fr = open(fileName)for line in fr.readlines():lineArr = []curLine = line.strip().split('\t')for i in range(numFeat):lineArr.append(float(curLine[i]))xArr.append(lineArr)yArr.append(float(curLine[-1]))return np.array(xArr), np.array(yArr)def main():"""(頂層代碼)線性回歸模型完成鮑魚年齡的預測:return:"""# 使用loadDataSet函數讀取文件abalone.txt,將返回的屬性集、標簽集賦值給X, yX, y = loadDataSet(r"E:\wynuJunior\模式識別\5回歸實踐\abalone.csv")# #===================手寫LinearRegression==============================# #lr = LinearRegression() # 實例化LinearRegression()模型lr.fit(X, y) # 使用fit方法進行訓練y_pre = lr.predict(X) # 使用predict方法,對訓練時的屬性集再進行預測print("手寫線性回歸預測標簽:", y_pre)# #===================sklearn模塊中LinearRegression=======================# #sklearn_lr = linear_model.LinearRegression() # 調用sklearn模塊中的線性回歸模型sklearn_lr.fit(X, y) # 使用fit方法進行訓練sklearn_y_pre = sklearn_lr.predict(X) # 使用predict方法,對訓練時的屬性集再進行預測print("sklearn模塊線性回歸預測標簽:\n", sklearn_y_pre)# 使用pearsonr相關系數,比較兩種預測結果的差距。(頂層代碼)# pearsonr函數可以從scipy.stats模塊導入,輸入兩個序列,比較其相似性,# 現將手寫模型的結果y_pre與sk-learn模型的結果sklearn_y_pre# 返回兩個數值,分別代表相似性與置信度,其中第一個數值(相似性)應當為1,否則代表手寫代碼出現錯誤。print('手動編寫的線性回歸與sklearn中的線性回歸預測結果相似性為: ', pearsonr(y_pre, sklearn_y_pre)[0])if __name__ == '__main__':main() # 程序執行入口 補充內容: 嶺回歸 # -*- coding: utf-8 -*- # @Author : yxn # @Date : 2022/11/23 22:36 # @IDE : PyCharm(2022.2.3) Python3.9.13 import numpy as np from sklearn import linear_modeldef loadDataSet(fileName):"""數據集每一行為一個樣本,其中最后一個值為標簽,其余值為屬性。根據文件名,依次讀取每一行,將屬性與標簽轉化為float類型,存儲在列表中,再存入屬性集xArr,標簽集yArr:param fileName: 數據集文件名fileName:return: 屬性集xArr,標簽集yArr(轉化成numpy的array類型)"""numFeat = len(open(fileName).readline().split('\t')) - 1xArr = []yArr = []fr = open(fileName)for line in fr.readlines():lineArr = []curLine = line.strip().split('\t')for i in range(numFeat):lineArr.append(float(curLine[i]))xArr.append(lineArr)yArr.append(float(curLine[-1]))return np.array(xArr), np.array(yArr)def Ridge_regression():"""嶺回歸模型完成鮑魚年齡的預測# 官方文檔 https://scikit-learn.org/dev/modules/generated/sklearn.linear_model.Ridge.html"""# 使用loadDataSet函數讀取文件abalone.txt,將返回的屬性集、標簽集賦值給X, yX, y = loadDataSet(r"E:\wynuJunior\模式識別\5回歸實踐\abalone.csv")# #===================sklearn模塊中嶺回歸=======================# ## l2正則化線性最小二乘。alpha是L2正則化常數,它乘以L2項,控制正則化的力量。# 當' alpha = 0 '時,目標等價于普通最小值平方.ridge_reg = linear_model.Ridge(alpha=0., solver='lsqr') # 嶺回歸ridge_reg.fit(X, y) # 使用fit方法進行訓練ridge_y_pre = ridge_reg.predict(X) # 使用predict方法,對訓練時的屬性集再進行預測print("sklearn模塊嶺回歸預測標簽:\n", ridge_y_pre)if __name__ == '__main__':Ridge_regression() # 程序執行入口

四、結果分析

運行結果如下:

可以看到我們是輸出標簽都是一樣的,而且預測結果相似性也達到了99.9%,可見手寫的線性回歸是正確的.

總結

以上是生活随笔為你收集整理的线性回归实战---Abalone鲍鱼年龄预测的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲永久精品在线观看 | 国产欧美一区二区三区视频在线观看 | 亚洲一二三四区 | 免费三片在线播放 | 久草在在线视频 | 日韩中文字幕网 | 狠狠操av| 亚洲一区二区视频在线 | 五月婷婷丁香激情 | 欧美精品二区三区 | 极品美女av | 依人综合 | 91爱爱视频 | 亚洲熟妇色自偷自拍另类 | 九色91popny蝌蚪新疆 | 中文字幕Av日韩精品 | 性生活视频软件 | 午夜诱惑痒痒网 | 狠狠操天天操 | 久久精品国产亚洲av麻豆色欲 | 欧美高潮视频 | 久草97 | 亚洲天堂成人在线观看 | 亚洲一区二区人妻 | 欧美精品一区二区三区久久久 | 日本午夜视频在线观看 | 黄色污污网站在线观看 | 一级理论片 | 在线观看高清av | 久草视频在线资源 | 久久国产免费观看 | 在线视频自拍 | 风间由美在线观看 | 欧美高清一区二区 | 中文字幕av有码 | 无码人妻aⅴ一区二区三区日本 | 亚洲精品国产欧美在线观看 | 四虎国产精品永久在线国在线 | 国产精品成人电影在线观看 | 欧美一级淫片 | 都市激情亚洲一区 | 91尤物视频| 久久婷婷一区二区 | 欧美人妖另类 | 亚洲一二三区在线 | 黄色三级在线 | 风韵少妇性饥渴推油按摩视频 | 香蕉免费在线视频 | 偷拍一区二区三区 | 日韩人妻精品中文字幕 | 波多野结衣在线观看一区二区三区 | 欧美日韩高清在线播放 | 狠狠干快播 | 外国黄色录像 | 91亚洲在线 | 成人国产精品免费观看 | 在线免费黄网 | 亚洲色图 欧美 | 爱爱视频在线播放 | 亚洲精品乱码久久久久久久久久久久 | 国产精品九| 亚洲女优在线播放 | 四虎影院在线 | 欧美黑大粗 | 在线观看aaa | 妖精视频在线观看免费 | 91视频网页| 欧美bbw视频 | 夜夜嗨视频 | 日韩在线观看视频网站 | 国内毛片毛片毛片毛片毛片 | 精品久久久久中文慕人妻 | 波多野结衣影院 | 久久久久久人妻一区二区三区 | 麻豆视频免费观看 | bbbbbxxxxx性欧美 | 黄色片在哪看 | 亚洲一卡二卡三卡四卡 | 亚洲永久免费观看 | 一级黄色片免费在线观看 | 三日本三级少妇三级99 | 欧洲色网站 | 国产成人一区二区三区小说 | 一区二区三区在线不卡 | 中文字幕永久免费 | 欧美日韩亚洲国产另类 | 天天干,天天爽 | 国模私拍大尺度裸体av | 欧美日韩天堂 | 一级大片在线观看 | 亚洲日日夜夜 | 午夜小视频在线播放 | 黄页网站视频 | 国产成人无码www免费视频播放 | 日韩精品区 | 欧美射射射 | 伊人网伊人影院 | 亚洲激情视频在线播放 | 免费在线观看的黄色网址 |