岭回归实现鲍鱼年龄预测 MATLAB实现
最近在研究正則化方法,發現吉洪諾夫正則化就是統計里的嶺回歸,正好之前上課的時候遇到過鮑魚年齡預測的問題,那就再跑跑代碼吧
鮑魚的年齡可以通過鮑魚殼的“環數”來判斷,但是獲取這個“環數”是十分耗時的,需要鋸開殼,然后在顯微鏡下觀察得到。
可以通過鮑魚的其他特征比如性別、長度、直徑、高度、整體重量、去殼后重量、臟器重量、殼的重量等,通過機器學習的方法來預測其環數,從而得到年齡,具有很大的應用價值。
現有一份鮑魚的數據集abalone.csv,該數據集有4177個數據樣本,每個樣本有9個特征,具體信息如下:
屬性 數據類型 單位 內容描述
性別(Sex) 標稱 M, F,I(infant)
長度(Length) 連續 毫米
直徑(Diameter) 連續 毫米
高度(Height) 連續 毫米
整體重量(Whole weight) 連續 克
去殼后重量(Shucked weight) 連續 克
臟器重量(Viscera weight) 連續 克
殼的重量(Shell weight) 連續 克
環數(Rings) 連續
利用Matlab平臺實現鮑魚年齡的預測,主要分為數據導入、預處理、回歸等步驟,直接上代碼吧:
clear;%導入數據 data = importdata('abalone.txt'); [m,n] = size(data.data);dataX = data.data;%特征 dataY = data.textdata;%標簽 dataY = cell2mat(dataY);%標準化 yMeans = mean(dataY); for i = 1:myMat(i,:) = dataY(i,:)-yMeans; endxMeans = mean(dataX); xVars = var(dataX); for i = 1:mxMat(i,:) = (dataX(i,:) - xMeans)./xVars; end% 運算30次 testNum = 30; weights = zeros(testNum, n); for i = 1:testNumw = ridgeRegression(xMat, yMat, exp(i-10));weights(i,:) = w'; end% 畫出隨著參數lam hold on axis([-9 20 -0.5 0.5]); xlabel log(lam); ylabel weights; for i = 1:nx = -9:20;y(1,:) = weights(:,i)';plot(x,y); end所需的函數ridgeRegression詳見鏈接:
嶺回歸函數
數據集鏈接:
https://download.csdn.net/download/qq_38994076/47363926?spm=1001.2014.3001.5501
總結
以上是生活随笔為你收集整理的岭回归实现鲍鱼年龄预测 MATLAB实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 回归综合案例——利用回归模型预测鲍鱼年龄
- 下一篇: 鲍鱼数据集处理/matlab