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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python统计分析--3.线性回归四种算法

發布時間:2023/12/15 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python统计分析--3.线性回归四种算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 最小二乘法
    • 1.1 最小二乘法
    • 1.2 正則化回歸
    • 1.3 SGD隨機梯度下降法
  • 2. 相關分析

幾種加速方法
statsmodel–>sklearn
ols最小二乘法,運算時間長,處理速度慢,占用內存大
sgd梯度下降法–需要內存小,可以處理大型數據—可以處理過擬合和稀疏數據(0和1)
正則化–占用內存小,可以處理過擬合和稀疏數據
n_jobs=-1 加速處理數據,所有內存來處理數據
批次/在線/mini bactgh加速
Gpu、cpu加速,sklearn不擅長Gpu、cpu加速,深層神經網絡可以進行加速

1. 最小二乘法

1.1 最小二乘法

最小二乘法是最佳估計的常見使用方法

1.2 正則化回歸

在最小二乘法后面加上一個參數,解決出現數據中有稀疏數據和共線性場景(缺點:內存需要大)

1.3 SGD隨機梯度下降法

不需要太多內存,效果會比上面兩種好

實現梯度下降Python代碼

#導入包 import numpy as np import pandas as pd import statsmodels.formula.api as smf from sklearn import linear_model import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["axes.unicode_minus"]=False#---------隨機梯度下降(Stochastic Gradient Descent)--------------- x=np.array([1,2,3,4,5,6]) y=np.array([3,6,5,9,8,8]) plt.scatter(x,y)#1.sgd最小化模型誤差 """ w=w-alpha*delta 注:w為回歸系數,alpha學習率,在[0 1]之間,通常設為0.3方程式:y=b0+b1*x """ #2.sgd算法""" 迭代#1 令:b0=0, b1=0,則y=0+0*x 因為error(i)=p(i)-y(i),所以error(1)=0-3=-3,其中p是預測值因為b0(t+1)=b0(t)-alpha*error,所以b0(t+1)=0-0.3*(-3)=0.9 因為b1(t+1)=b1(t)-alpha*error*x,所以b1(t+1)=0-0.3*(-3)*1=0.9迭代#2 令:b0=0.9, b1=0.9,則y=0.9+0.9*x 因為error(i)=p(i)-y(i),所以error(1)=2.7-6=-3.3因為b0(t+1)=b0(t)-alpha*error,所以b0(t+1)=0.9-0.3*(-3.3)=1.89 因為b1(t+1)=b1(t)-alpha*error*x,所以b1(t+1)=0.9-0.3*(-3.3)*2=2.88迭代#3......注:一共6行數據,迭代后重新從第一行開始,則6次迭代為一個epoch(全部樣本訓練一次) """ print()

2. 相關分析

導入需要的安裝包,和讀取文件

#導入包 import numpy as np import pandas as pd import statsmodels.formula.api as smf from sklearn import linear_model import seaborn as sns import matplotlib.pyplot as plt %matplotlib inline plt.rcParams["font.sans-serif"]=["SimHei"] plt.rcParams["axes.unicode_minus"]=False#使用pandas讀取數據支持xls和xlsx data=pd.read_excel("運動.xlsx") data1=pd.read_excel("運動1.xlsx") data.head(2)
  • 各種圖形的程序
#相關分析corr plt.scatter(x="運動時間",y="體重",s=100,data=data,alpha=0.3)#alpha=氣泡透明度,22為尺寸 data.corr(method="spearman")#顯示所有變量,method=pearson、kendall、spearman data.corr()["體重"]#顯示績效總分與其他變量的相關系數 sns.heatmap(data.corr(method="spearman"),cmap='tab10_r') sns.pairplot(data=data.iloc[:,[0,1,2,3,4,5]],vars=["運動時間", "騎行時間","體重"],hue='親緣') plt.show() from scipy import stats r,p=stats.pearsonr(data["體重"],data["運動時間"])#顯示p值 print(r,p)
  • 散點圖
#相關分析corr plt.scatter(x="運動時間",y="體重",s=100,data=data,alpha=0.3) #alpha=氣泡透明度,22為尺寸

數據大多數集中在0.5-1之間

  • 熱力圖
#相關分析corr sns.heatmap(data.corr(method="spearman"),cmap='tab10_r')

看各變量之間的相關性

  • 配對散點圖
#相關分析corr sns.pairplot(data=data.iloc[:,[0,1,2,3,4,5]],vars=["運動時間", "騎行時間","體重"],hue='親緣')

sns.pairplot(data=data1.iloc[:,[0,1,2,3,4,5]],vars=["運動時間", "騎行時間","體重"],hue='親緣')#hue表示以什么為分組


線性回歸只適合于中間部分線性,兩端不太實用,需要插入一些函數去修正這個參數

#---------老樣本和新樣本預測---------------- x=data1.iloc[:,1:6] x_new=pd.DataFrame([{'飲食':2,'性別':2,'親緣':1,'運動時間':3.22,'騎行時間':1.36}]) result.predict(x_new)

線性預測的結果不是很好,預測出人的體重為36.627公斤,與實際值相差很大,需要去修正,插入一些函數

  • 筆記

總結

以上是生活随笔為你收集整理的python统计分析--3.线性回归四种算法的全部內容,希望文章能夠幫你解決所遇到的問題。

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