中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

鄭州 做網(wǎng)站優(yōu)化大師官網(wǎng)下載安裝

鄭州 做網(wǎng)站,優(yōu)化大師官網(wǎng)下載安裝,改wordpress,芯片設(shè)計(jì)培訓(xùn)添加原始數(shù)據(jù)的交互特征(interaction feature)和多項(xiàng)式特征(polynomial feature)可以豐富特征表示,特別是對(duì)于線性模型。這種特征工程可以用統(tǒng)計(jì)建模和許多實(shí)際的機(jī)器學(xué)習(xí)應(yīng)用中。 上一次學(xué)習(xí):線性模型對(duì)w…

添加原始數(shù)據(jù)的交互特征(interaction feature)和多項(xiàng)式特征(polynomial feature)可以豐富特征表示,特別是對(duì)于線性模型。這種特征工程可以用統(tǒng)計(jì)建模和許多實(shí)際的機(jī)器學(xué)習(xí)應(yīng)用中。

上一次學(xué)習(xí):線性模型對(duì)wave數(shù)據(jù)集中的每個(gè)箱子都學(xué)到一個(gè)常數(shù)值。但我們知道,線性模型不僅可以學(xué)習(xí)偏移,還可以學(xué)習(xí)斜率。想要向分箱數(shù)據(jù)上的線性模型添加斜率,一種方法是重新加入原始特征。這樣會(huì)得到11維的數(shù)據(jù)集,如下代碼:

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizerX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
print(X_combined.shape)reg = LinearRegression().fit(X_combined, y)line_combined = np.hstack([line, line_binned])
plt.plot(line, reg.predict(line_combined), label='linear regression combined')
plt.vlines(kb.bin_edges_[0], -3, 3, linewidth=1, alpha=.2)
plt.legend(loc="best")
plt.ylabel("Regression output")
plt.xlabel("Input feature")
plt.plot(X[:, 0], y, 'o', c='k')
plt.show()

輸出結(jié)果:(100, 11)

輸出圖形:

輸出的圖形是使用分箱特征和單一全局斜率的線性回歸。

在這個(gè)例子中,模型在每個(gè)箱子中都學(xué)到一個(gè)偏移,還學(xué)到一個(gè)斜率。學(xué)到的斜率是向下的,并且在所有箱子中都相同——只有一個(gè)x軸特征,也就只有一個(gè)斜率。因?yàn)樾甭试谒邢渥又惺窍嗤?#xff0c;所以它似乎不是很有用。我們更希望每個(gè)箱子都有一個(gè)不同的斜率。為了實(shí)現(xiàn)這一點(diǎn),我們可以添加交互特征或乘積特征,用來(lái)表示數(shù)據(jù)點(diǎn)所在的箱子以及數(shù)據(jù)點(diǎn)在x軸上的位置。這個(gè)特征是箱子指示符與原始特征的乘積。下面來(lái)創(chuàng)建數(shù)據(jù)集:

import numpy as np
import mglearn
#import matplotlib.pyplot as plt
#from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizerX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)line_combined = np.hstack([line, line_binned])# 創(chuàng)建數(shù)據(jù)集
X_product = np.hstack([X_binned, X * X_binned])
print(X_product.shape)

輸出:(100, 20)? 。這個(gè)數(shù)據(jù)集現(xiàn)在有20個(gè)特征:數(shù)據(jù)點(diǎn)所在箱子的指示符與原始特征和箱子指示符的乘積。可以將乘積特征看作每個(gè)箱子x軸特征的單獨(dú)副本。它在箱子內(nèi)等于原始特征,在其他 位置等于零。下面我們代碼繪圖給出線性模型在這種新表示上的結(jié)果:

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizerX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)# 創(chuàng)建數(shù)據(jù)集
X_product = np.hstack([X_binned, X * X_binned])
#print(X_product.shape)reg = LinearRegression().fit(X_product, y)line_product = np.hstack([line_binned, line * line_binned])plt.plot(line, reg.predict(line_product), label='linear regression product')
plt.vlines(kb.bin_edges_[0], -3, 3, linewidth=1, alpha=.2)
plt.plot(X[:, 0], y, 'o', c='k')
plt.ylabel("Regression output")
plt.xlabel("Input feature")
plt.legend(loc="best")
plt.show()

輸出圖形:

上圖顯示每個(gè)箱子具有不同的偏移和斜率。使用分箱是擴(kuò)展連續(xù)特征的一種方法。另一種方法是 使用原始特征的多項(xiàng)式(polynomial)。對(duì)于給定特征x,我們可以考慮x ** 2、x ** 3、x ** 4,等等。這在preprocessing模塊的PolynomialFeatures中實(shí)現(xiàn):

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizer
from sklearn.preprocessing import PolynomialFeaturesX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)# 創(chuàng)建數(shù)據(jù)集
#X_product = np.hstack([X_binned, X * X_binned])
#print(X_product.shape)# 包含直到x ** 10的多項(xiàng)式:
# 默認(rèn)的"include_bias=True"添加恒等于1的常數(shù)特征
poly = PolynomialFeatures(degree=10, include_bias=False)
poly.fit(X)
X_poly = poly.transform(X)
# 多項(xiàng)式的次數(shù)為 10,因此生成10個(gè)特征:
print("X_poly.shape: {}".format(X_poly.shape))

輸出:X_poly.shape: (100, 10)

比較X_ploy和X的元素:

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizer
from sklearn.preprocessing import PolynomialFeaturesX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)# 創(chuàng)建數(shù)據(jù)集
#X_product = np.hstack([X_binned, X * X_binned])
#print(X_product.shape)# 包含直到x ** 10的多項(xiàng)式:
# 默認(rèn)的"include_bias=True"添加恒等于1的常數(shù)特征
poly = PolynomialFeatures(degree=10, include_bias=False)
poly.fit(X)
X_poly = poly.transform(X)
# 多項(xiàng)式的次數(shù)為 10,因此生成10個(gè)特征:
print("X_poly.shape: {}".format(X_poly.shape))# 比較 X_poly 和 X 的元素:
print("Entries of X:\n{}".format(X[:5]))
print("Entries of X_poly:\n{}".format(X_poly[:5]))

輸出:

Entries of X:
[[-0.75275929]
?[ 2.70428584]
?[ 1.39196365]
?[ 0.59195091]
?[-2.06388816]]
Entries of X_poly:
[[-7.52759287e-01 ?5.66646544e-01 -4.26548448e-01 ?3.21088306e-01
? -2.41702204e-01 ?1.81943579e-01 -1.36959719e-01 ?1.03097700e-01
? -7.76077513e-02 ?5.84199555e-02]
?[ 2.70428584e+00 ?7.31316190e+00 ?1.97768801e+01 ?5.34823369e+01
? ?1.44631526e+02 ?3.91124988e+02 ?1.05771377e+03 ?2.86036036e+03
? ?7.73523202e+03 ?2.09182784e+04]
?[ 1.39196365e+00 ?1.93756281e+00 ?2.69701700e+00 ?3.75414962e+00
? ?5.22563982e+00 ?7.27390068e+00 ?1.01250053e+01 ?1.40936394e+01
? ?1.96178338e+01 ?2.73073115e+01]
?[ 5.91950905e-01 ?3.50405874e-01 ?2.07423074e-01 ?1.22784277e-01
? ?7.26822637e-02 ?4.30243318e-02 ?2.54682921e-02 ?1.50759786e-02
? ?8.92423917e-03 ?5.28271146e-03]
?[-2.06388816e+00 ?4.25963433e+00 -8.79140884e+00 ?1.81444846e+01
? -3.74481869e+01 ?7.72888694e+01 -1.59515582e+02 ?3.29222321e+02
? -6.79478050e+02 ?1.40236670e+03]]

我們可以通過調(diào)用 get_feature_names_out 方法來(lái)獲取特征的語(yǔ)義,給出每個(gè)特征的指數(shù):

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizer
from sklearn.preprocessing import PolynomialFeaturesX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)# 創(chuàng)建數(shù)據(jù)集
#X_product = np.hstack([X_binned, X * X_binned])
#print(X_product.shape)# 包含直到x ** 10的多項(xiàng)式:
# 默認(rèn)的"include_bias=True"添加恒等于1的常數(shù)特征
poly = PolynomialFeatures(degree=10, include_bias=False)
poly.fit(X)
X_poly = poly.transform(X)
# 多項(xiàng)式的次數(shù)為 10,因此生成10個(gè)特征:
print("X_poly.shape: {}".format(X_poly.shape))# 比較 X_poly 和 X 的元素:
print("Entries of X:\n{}".format(X[:5]))
print("Entries of X_poly:\n{}".format(X_poly[:5]))#調(diào)用 get_feature_names_out 方法來(lái)獲取特征的語(yǔ)義,給出每個(gè)特征的指數(shù)
print("Polynomial feature names:\n{}".format(poly.get_feature_names_out()))

輸出:

Polynomial feature names:
['x0' 'x0^2' 'x0^3' 'x0^4' 'x0^5' 'x0^6' 'x0^7' 'x0^8' 'x0^9' 'x0^10']

可以看到,X_poly 的第一列與 X 完全對(duì)應(yīng),而其他列則是第一列的冪。有趣的是,可以發(fā)現(xiàn)有些值非常大。第二行有大于 20000 的元素,數(shù)量級(jí)與其他行都不相同。將多項(xiàng)式特征與線性回歸模型一起使用,可以得到經(jīng)典的多項(xiàng)式回歸(polynomial regression)模型,見如下代碼實(shí)現(xiàn):

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
#from sklearn.tree import DecisionTreeRegressor
#from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import KBinsDiscretizer
from sklearn.preprocessing import PolynomialFeaturesX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)# 生成10個(gè)箱子
#kb = KBinsDiscretizer(n_bins=10, strategy='uniform')
#kb.fit(X)kb = KBinsDiscretizer(n_bins=10, strategy='uniform', encode='onehot-dense')
kb.fit(X)
#X_binned = kb.transform(X)
# 記錄每個(gè)數(shù)據(jù)點(diǎn)所屬的箱子。
X_binned = kb.transform(X)
#line_binned = kb.transform(line)# 加入原始特征
X_combined = np.hstack([X, X_binned])
#print(X_combined.shape)# 創(chuàng)建數(shù)據(jù)集
#X_product = np.hstack([X_binned, X * X_binned])
#print(X_product.shape)# 包含直到x ** 10的多項(xiàng)式:
# 默認(rèn)的"include_bias=True"添加恒等于1的常數(shù)特征
poly = PolynomialFeatures(degree=10, include_bias=False)
poly.fit(X)
X_poly = poly.transform(X)
# 多項(xiàng)式的次數(shù)為 10,因此生成10個(gè)特征:
#print("X_poly.shape: {}".format(X_poly.shape))# 比較 X_poly 和 X 的元素:
#print("Entries of X:\n{}".format(X[:5]))
#print("Entries of X_poly:\n{}".format(X_poly[:5]))#調(diào)用 get_feature_names 方法來(lái)獲取特征的語(yǔ)義,給出每個(gè)特征的指數(shù)
#print("Polynomial feature names:\n{}".format(poly.get_feature_names_out()))reg = LinearRegression().fit(X_poly, y)line_poly = poly.transform(line)
plt.plot(line, reg.predict(line_poly), label='polynomial linear regression')
plt.plot(X[:, 0], y, 'o', c='k')
plt.ylabel("Regression output")
plt.xlabel("Input feature")
plt.legend(loc="best")
plt.show()

輸出圖形:

上圖是具有 10 次多項(xiàng)式特征的線性回歸。多項(xiàng)式特征在這個(gè)一維數(shù)據(jù)上得到了非常平滑的擬合。但高次多項(xiàng)式在邊界上或數(shù)據(jù)很少的區(qū)域可能有極端的表現(xiàn)。作為對(duì)比,下面是在原始數(shù)據(jù)上學(xué)到的核SVM模型,沒有做任何變換:

import numpy as np
import mglearn
import matplotlib.pyplot as plt
from sklearn.svm import SVRX, y = mglearn.datasets.make_wave(n_samples=100)
line = np.linspace(-3, 3, 1000, endpoint=False).reshape(-1, 1)for gamma in [1, 10]:svr = SVR(gamma=gamma).fit(X, y)plt.plot(line, svr.predict(line), label='SVR gamma={}'.format(gamma))plt.plot(X[:, 0], y, 'o', c='k')
plt.ylabel("Regression output")
plt.xlabel("Input feature")
plt.legend(loc="best")
plt.show()

輸出圖形(對(duì)于RBF核的SVM,使用不同 gamma 參數(shù)的對(duì)比):

使用更加復(fù)雜的模型(即核 SVM),能夠?qū)W到一個(gè)與多項(xiàng)式回歸的復(fù)雜度類似的預(yù)測(cè)結(jié)果,且不需要進(jìn)行顯式的特征變換。

http://www.risenshineclean.com/news/1484.html

相關(guān)文章:

  • 國(guó)內(nèi)機(jī)加工訂單百度seo公司一路火
  • 東莞建設(shè)質(zhì)監(jiān)網(wǎng)站網(wǎng)站制作需要多少錢
  • wordpress做社交網(wǎng)站嗎放心網(wǎng)站推廣優(yōu)化咨詢
  • 嬰兒衣服做的網(wǎng)站域名注冊(cè)管理機(jī)構(gòu)
  • 怎么給領(lǐng)導(dǎo)做網(wǎng)站分析網(wǎng)站鏈接查詢
  • 網(wǎng)站開發(fā)的實(shí)訓(xùn)報(bào)告前端開發(fā)
  • 怎樣做水族館網(wǎng)站關(guān)鍵詞在線試聽免費(fèi)
  • 做外貿(mào)賣小商品是哪個(gè)網(wǎng)站在線識(shí)圖
  • 哪些可以免費(fèi)做網(wǎng)站推廣優(yōu)化關(guān)鍵詞
  • 合肥網(wǎng)站建設(shè)設(shè)計(jì)海外免費(fèi)網(wǎng)站推廣
  • 特產(chǎn)網(wǎng)站開發(fā)的好處怎么在百度發(fā)布信息
  • 松原做網(wǎng)站公司刷排名的軟件是什么
  • 網(wǎng)站流量如何提高網(wǎng)站友情鏈接購(gòu)買
  • 比較還做的調(diào)查網(wǎng)站google搜索首頁(yè)
  • 莆田 網(wǎng)站建設(shè)今日最新新聞重大事件
  • 成都食品網(wǎng)站開發(fā)哈爾濱網(wǎng)站推廣
  • 怎么給購(gòu)物網(wǎng)站做推廣網(wǎng)站維護(hù)費(fèi)用
  • 北京哪家公司做網(wǎng)站好seo發(fā)貼軟件
  • 做新聞?lì)惥W(wǎng)站google搜索關(guān)鍵詞熱度
  • 網(wǎng)站用戶注冊(cè)怎么建新手做電商怎么起步
  • 網(wǎng)站網(wǎng)站設(shè)計(jì)公司互聯(lián)網(wǎng)平臺(tái)
  • 邯鄲做網(wǎng)站的十大免費(fèi)b2b網(wǎng)站
  • 工信部備案網(wǎng)站查網(wǎng)絡(luò)營(yíng)銷的目的是
  • 網(wǎng)站加友情鏈接的好處手機(jī)百度2020
  • 做盜版小說(shuō)網(wǎng)站能賺錢不百度經(jīng)驗(yàn)懸賞任務(wù)平臺(tái)
  • 網(wǎng)絡(luò)科技公司網(wǎng)站建設(shè)策劃百度搜索排名怎么收費(fèi)
  • wordpress部署seo怎么學(xué)在哪里學(xué)
  • 如何管理網(wǎng)站端口掃描站長(zhǎng)工具
  • 京東網(wǎng)站是自己做的嗎武漢百度信息流廣告
  • 東莞網(wǎng)站建設(shè)哪家好網(wǎng)站推廣的渠道有哪些