摘要:合成特征和離群值學習目標嘗試合成特征上一次我們只使用了單個特征,但這是不切實際的,往往我們需要多個特征,但此次并不是使用多個特征,而是創建一個合成特診和特征都會統計指定街區的相關總計數據。
合成特征和離群值
學習目標:
嘗試合成特征上一次我們只使用了單個特征,但這是不切實際的,往往我們需要多個特征,但此次并不是使用多個特征,而是創建一個合成特診
total_rooms 和 population 特征都會統計指定街區的相關總計數據。
但是,如果一個街區比另一個街區的人口更密集,會怎么樣?我們可以創建一個合成特征(即 total_rooms 與 population 的比例)來探索街區人口密度與房屋價值中位數之間的關系。
# 創建合成特征 california_housing_dataframe["rooms_per_person"] =california_housing_dataframe["total_rooms"]/california_housing_dataframe["population"] calibration_data = train_model( learning_rate=0.0005, steps=500, batch_size=1, input_feature="rooms_per_person" )
結果:
Training model...
RMSE (on training data):
period 00 : 237.29
period 01 : 237.04
period 02 : 236.78
period 03 : 236.53
period 04 : 236.28
period 05 : 236.03
period 06 : 235.78
period 07 : 235.53
period 08 : 235.27
period 09 : 235.02
Model training finished
效果很差,因為RMSE變化很小,我們可以嘗試增大學習速率,*10 learning_rate=0.005
Training model...
RMSE (on training data):
period 00 : 235.03
period 01 : 232.52
period 02 : 230.03
period 03 : 227.56
period 04 : 225.13
period 05 : 222.70
period 06 : 220.38
period 07 : 217.95
period 08 : 215.54
period 09 : 213.17
Model training finished.
可以發現RMSE是在逐漸收斂的,學習速率沒有過大,繼續*10 learning_rate=0.05
Training model...
RMSE (on training data):
period 00 : 212.86
period 01 : 190.91
period 02 : 172.64
period 03 : 155.99
period 04 : 149.72
period 05 : 141.27
period 06 : 136.94
period 07 : 134.30
period 08 : 131.94
period 09 : 130.69
Model training finished.
從RMSE的下降速率來看,說明已經接近最小值了,為其增大一點點,+0.005 learning_rate=0.055
Training model...
RMSE (on training data):
period 00 : 210.61
period 01 : 185.76
period 02 : 166.58
period 03 : 150.86
period 04 : 142.97
period 05 : 136.05
period 06 : 133.06
period 07 : 132.46
period 08 : 131.34
period 09 : 130.55
Model training finished.
predictions | targets | |
---|---|---|
count | 17000.0 | 17000.0 |
mean | 170.9 | 207.3 |
std | 77.4 | 116.0 |
min | 41.1 | 15.0 |
25% | 140.6 | 119.4 |
50% | 168.3 | 180.4 |
75% | 191.9 | 265.0 |
max | 3693.8 | 500.0 |
Final RMSE (on training data): 130.55
可以發現結果變化很小,我們在這里就可以停止了,因為再次嘗試下去,要浪費太多的計算量和時間
識別離群值通過上圖的預測值與目標值的散點圖效果,可以發現,
如果是在理想情況下,這些值將位于一條完全相關的對角線上。
但是現在卻是存在許多異常的散點,如果我們能夠查找到這些異常點的原因并將其篩除掉,那么效果一定會更好更貼近真實情況
# 尺寸15*6 plt.figure(figsize=(15, 6)) # 1行2列,先畫第一個格 plt.subplot(1, 2, 1) # x,y軸標簽 plt.xlabel("predictioon") plt.ylabel("targets") # 繪制散點圖 plt.scatter(calibration_data["predictions"], calibration_data["targets"]) # 第二個繪制直方圖 plt.subplot(1, 2, 2) california_housing_dataframe["rooms_per_person"].hist()
結果:
從散點圖中可以看出,絕大部分的散點匯集在一條豎直的直線上(其實這也并不是一條直線,而是因為x軸的分辨率太大了,一格500),還有一些是散亂分布的
為什么大部分點會垂直排列,這個原因我們先不講,這不是這次訓練目的,我們的目的是要找出極少出的異常的點
再看直方圖,大部分是在0-5這條線上,少數的應該就是異常值了,下面我們濾掉他們,并看下結果會怎樣
california_housing_dataframe["rooms_per_person"] = ( california_housing_dataframe["rooms_per_person"]).apply(lambda x: min(x, 5)) _ = california_housing_dataframe["rooms_per_person"].hist()
結果:
這次都在0-5之內了
再次訓練
calibration_data = train_model( learning_rate=0.055, steps=500, batch_size=5, input_feature="rooms_per_person")
結果:
Training model...
RMSE (on training data):
period 00 : 210.41
period 01 : 184.47
period 02 : 160.39
period 03 : 140.40
period 04 : 124.11
period 05 : 117.53
period 06 : 110.61
period 07 : 108.84
period 08 : 108.26
period 09 : 108.65
Model training finished.
predictions | targets | |
---|---|---|
count | 17000.0 | 17000.0 |
mean | 191.6 | 207.3 |
std | 50.1 | 116.0 |
min | 44.8 | 15.0 |
25% | 159.7 | 119.4 |
50% | 191.7 | 180.4 |
75% | 218.9 | 265.0 |
max | 425.3 | 500.0 |
Final RMSE (on training data): 108.65
這次的結果好過以前的每一次,體現在RMSE下降的速度特別快,說明少了很多干擾,其次便是RMSE這次是最小的,說明去除離群值后效果真的是好了很多
plt.scatter(calibration_data["predictions"], calibration_data["targets"])
結果:
現在可以看出散點分布其實是挺集中的。
以上,結束
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44633.html
摘要:得分與距離均值的標準偏差數相關。不過,在我們的模型中將表示為浮點特征將其看為一個浮點數,以它的數值大小為特征沒有意義。清查截至目前,我們假定用于訓練和測試的所有數據都是值得信賴的。良好的機器學習依賴于良好的數據。 特征工程 將原始數據映射到特征 我們在進行機器學習的時候,采用的數據樣本往往是矢量(特征矢量),而我們的原始數據并不是以矢量的形式呈現給我們的,這是便需要將數據映射到特征...
摘要:在本次課程中,著重講解的是傳統的機器學習技術及各種算法。回歸對連續型數據進行預測趨勢預測等除了分類之外,數據挖掘技術和機器學習技術還有一個非常經典的場景回歸。 摘要: 什么是數據挖掘?什么是機器學習?又如何進行Python數據預處理?本文將帶領大家一同了解數據挖掘和機器學習技術,通過淘寶商品案例進行數據預處理實戰,通過鳶尾花案例介紹各種分類算法。 課程主講簡介:韋瑋,企業家,資深IT領...
摘要:在本次課程中,著重講解的是傳統的機器學習技術及各種算法。回歸對連續型數據進行預測趨勢預測等除了分類之外,數據挖掘技術和機器學習技術還有一個非常經典的場景回歸。 摘要: 什么是數據挖掘?什么是機器學習?又如何進行Python數據預處理?本文將帶領大家一同了解數據挖掘和機器學習技術,通過淘寶商品案例進行數據預處理實戰,通過鳶尾花案例介紹各種分類算法。 課程主講簡介:韋瑋,企業家,資深IT領...
閱讀 1113·2021-11-19 09:40
閱讀 969·2021-11-12 10:36
閱讀 1259·2021-09-22 16:04
閱讀 3106·2021-09-09 11:39
閱讀 1266·2019-08-30 10:51
閱讀 1882·2019-08-30 10:48
閱讀 1221·2019-08-29 16:30
閱讀 464·2019-08-29 12:37