亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中怎么實現一個抽樣回歸算法

發布時間:2021-07-05 16:12:41 來源:億速云 閱讀:185 作者:Leah 欄目:云計算

本篇文章為大家展示了python中怎么實現一個抽樣回歸算法,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

12 抽查回歸算法

12.1 算法概要

討論以下算法 線性算法

  • 線性回歸

  • RIdge 嶺回歸

  • LASSO 線性回歸

  • Elastic Net Regression 沒找到翻譯,是一種衍生出來的算法。 非線性算法

  • K近鄰

  • CART 決策樹

  • SVM 支持向量機 這三種不是分類方法么, 怎么也在這里討論, 等會通過具體的例子來看看。

解決的問題是波士頓房價問題。 所有參數都是數字型的。 用上述算法來做抽樣, 然后用mean squared error 均方誤差 來估計結果。

12.1 線性學習算法

12.1.1 線性回歸

線性回歸假設輸入變量有是遵守高斯分布。 而每種特征和結果都有關聯, 但是各自之間并沒有強關聯。

線性回歸, 就是把樣本的點擬合成一條線, 這條線最大程度可以反應數據的規律。

# Linear Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LinearRegression
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
kfold = KFold(n_splits=10, random_state=7)
model = LinearRegression()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

# -34.7052559445

12.2.2 嶺回歸

什么叫嶺回歸呢。 它是線性回歸的一種擴展。 這里可以簡單說兩句幾個基本概念。

  • 線性回歸的基本套路: 線性回歸的這類問題。 基本過程是這樣的:首先要有預測的模型, 然后要計算損失函數,得到問題表達式, 第三就是需要有算法來計算損失函數的系數, 使得最優(可能行最大或者誤差最小)


    • 預測的模型, 線性的。


    • 計算損失函數。 兩種方法 1) 極大似然估計。 這個呢就是假設樣本屬于某種分布, 然后得出問題:如何復制參數使得這些樣本出現的概率最大。 就是所謂極大似然。 2) 最小二乘。 就是計算模型得到的值和樣本結果之間差平方和。 問題是如何使這個表達式最小。


    • 上面兩種問題殊途同歸. - 如何證明? 下面來計算這個問題 看用何種算法。

  • 1) 梯度下降法 基本的思路就是初始一個theta向量, 然后計算一個value. 更新theta, 原來的theta減去用步長和最快下降的方向的乘積. 方向就是對每個theta求導. 之后繼續計算結果直接收斂.

  • 可能是局部收斂. 所以初始點很重要.

  1. 正規方程. 理解就是矩陣直接求逆然后來求導.

  2. 高斯牛頓法. 應用泰勒展開,

  • 問題的引申. 3) 這種方式呢容易過擬合, 畢竟需要擬合所有的點, 因為是求解得到的. 所以引入了正則化.

    • 首先這個時候叫lasso 又叫線性回歸的L1正則化

    • 這時引入了兩種全新的求極值解法坐標軸下降法(coordinate descent)和最小角回歸法( Least Angle Regression, LARS)

    1. 如果正則項是平方的形式, 就是嶺回歸. 這時候的問題容易有維數過多. - 為什么.

    2. 正則項是拉姆達乘以一個的 一次的絕對值. 對這個問題求解, 問題是絕對值是不連續的 不可導 是跳躍的, 這樣呢就不能用梯度下降和正規方程的做法.

這節是嶺回歸, 下一節是LASSO 回歸

# Ridge Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import Ridge
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
num_folds = 10
kfold = KFold(n_splits=10, random_state=7)
model = Ridge()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())
# -34.0782462093

12.2.3 LASSO 回歸

# Lasso Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import Lasso
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=False, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
kfold = KFold(n_splits=10, random_state=7)
model = Lasso()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

# -34.4640845883

12.2.4 ElasticNet 回歸

ElasticNet 回歸綜合了嶺回歸和LASSO 回歸, 也就是說添加了L1正則, 和L2正則。 來看看效果。

# ElasticNet Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import ElasticNet
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=True, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
kfold = KFold(n_splits=10, random_state=7)
model = ElasticNet()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())
# -31.1645737142

12.3 非線性機器學習模型

12.3.1 K近鄰

K近鄰是基于距離的一種算法。 在訓練集中找到k個和這個新的紀錄的距離最近的。 一個平均值作為預測結果。

  • 因為每次都要比較所有的距離, 這個算法的預測過程是比較慢的。

  • 距離, 默認是閔科夫斯基距離。 還有歐氏距離和曼哈頓距離。

# KNN Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsRegressor
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=False, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
kfold = KFold(n_splits=10, random_state=7)
model = KNeighborsRegressor()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())
# -107.28683898

12.3.2 CART

# Decision Tree Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=False, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
kfold = KFold(n_splits=10, random_state=7)
model = DecisionTreeRegressor()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())

# -34.74746

12.3.4 SVM

注意 這里的SVM 是基于LIBSVM 包的。

# SVM Regression
from pandas import read_csv
from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVR
filename = 'housing.csv'
names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO',
'B', 'LSTAT', 'MEDV']
dataframe = read_csv(filename, delim_whitespace=False, names=names)
array = dataframe.values
X = array[:,0:13]
Y = array[:,13]
num_folds = 10
kfold = KFold(n_splits=10, random_state=7)
model = SVR()
scoring = 'neg_mean_squared_error'
results = cross_val_score(model, X, Y, cv=kfold, scoring=scoring)
print(results.mean())
# -91.0478243332

上述內容就是python中怎么實現一個抽樣回歸算法,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永宁县| 略阳县| 治多县| 孟津县| 许昌县| 沾化县| 青龙| 广饶县| 永泰县| 苏尼特右旗| 克什克腾旗| 三穗县| 修文县| 二手房| 沁阳市| 安丘市| 行唐县| 栖霞市| 邵阳县| 区。| 琼结县| 敖汉旗| 沭阳县| 广元市| 沐川县| 绵阳市| 益阳市| 石棉县| 昌邑市| 滁州市| 象山县| 宁晋县| 玛沁县| 平和县| 鞍山市| 北辰区| 钟山县| 高平市| 新野县| 天津市| 临清市|