摘要:得分與距離均值的標準偏差數相關。不過,在我們的模型中將表示為浮點特征將其看為一個浮點數,以它的數值大小為特征沒有意義。清查截至目前,我們假定用于訓練和測試的所有數據都是值得信賴的。良好的機器學習依賴于良好的數據。
特征工程
我們在進行機器學習的時候,采用的數據樣本往往是矢量(特征矢量),而我們的原始數據并不是以矢量的形式呈現給我們的,這是便需要將數據映射到特征
整數和浮點數映射直接映射便ok(雖然機器學習是根據浮點值進行的訓練,但是不需要將整數6轉換為6.0,這個過程是默認的)
字符串映射好多時候,有的特征是字符串,比如此前訓練的加利福尼亞房產數據集中的街區名稱,機器學習是無法根據字符串來學習規律的,所以需要轉換。但是存在一個問題,如果字符特征是""一環"" ""二環"" ""三環""...(代表某個城市的地理位置),那么對其進行數值轉換的時候,是不可以編碼為形如1,2,3,4...這樣的數據的,因為其存在數據大小的問題,學習模型會把他們的大小關系作為特征而學習,所以我們需要引入獨熱編碼,(具體解釋見鏈接,解釋的很好)
尋找良好特征(的特點)當得到特征之后,還是要進行篩選的,因為有的特征沒有參考價值,就像我們的在做合成特征的時候,正常的特征數據是人均幾間房間,而有的人是幾十間,這明顯沒有參考價值
良好特征的幾點原則
避免很少使用的離散特征值:如果只是出現了一兩次的特征幾乎是沒有意義的
最好具有清晰明確的含義:特征的含義不僅僅是讓機器學習的模型學習的,人也要知道其具體的含義,不然不利于分析數據(最好將數值很大的秒轉換為天數,或者年,讓人看起來直觀一些)
將“神奇”的值與實際數據混為一談:有些特征中會出現一些"神奇的數據",當然這些數據并不是很少的特征,而是超出范圍的異常值,比如特征應該是介于0——1之間的,但是因為這個數據是空缺的,而采用的默認數值-1,那么這樣的數值就是"神奇",解決辦法是,將該特征轉換為兩個特征:
一個特征只存儲質正常范圍的值,不含神奇值。
一個特征存儲布爾值,表示的信息為是否為空
考慮上游不穩定性:由經驗可知,特征的定義不應隨時間發生變化,代表城市名稱的話,那么特征值始終都該是城市的名稱,但是有的時候,上游模型將特征值處理完畢后,返還給下游模型的卻變成了數值,這樣是不好的,因為這種表示在未來運行其他模型時可能輕易發生變化,那么特征就亂套了
清理數據(整理數據)清理數據,顧名思義,就是將數據清理(整理一下).....好像是廢話。
在上一步后,我們現在得到的數據已經全部是數值化的特征了,(這里肯定有但是的),但是,這樣的數據直接拿過來訓練效果還是會很糟糕,因為其中存在許許多多的壞數據,就是一些值不是那么正常的數據,像之前說的那種數值特別大的就屬于這一種,當然除了數值異常的還有許許多多種的壞數據,下面就來看一看有哪些方法對付這些妖艷賤貨
縮放是指將浮點特征值從自然范圍(例如 100 到 900)轉換為標準范圍(例如 0 到 1 或 -1 到 +1)。如果某個特征集只包含一個特征,則縮放可以提供的實際好處微乎其微或根本沒有。不過,如果特征集包含多個特征,則縮放特征可以帶來以下優勢:
幫助梯度下降法更快速地收斂(各個特征數值小,這樣算的跨的步子大呀)。
幫助避免“NaN 陷阱”。當某個值在訓練期間超出浮點精確率限制時,數值會變成NaN,并且模型中的所有其他數值最終也會因數學運算而變成 NaN。( NaN)
_NaN_,是Not a Number的縮寫,在IEEE浮點數算術標準(IEEE 754)中定義,表示一些特殊數值(無窮與非數值(_NaN_)),為許多CPU與浮點運算器所采用。
幫助模型為每個特征確定合適的權重。如果沒有進行特征縮放,則模型會對范圍較大的特征投入過多精力。(因為如果其他的特征范圍過大,模型在訓練的時候會認為此種模型的權值大,進而影響模型的判斷)
由上可知,我們并不需要對每個浮點特征進行完全相同的縮放。即使特征 A 的范圍是 -1 到 +1,同時特征 B 的范圍是 -3 到 +3,也不會產生什么惡劣的影響。不過,如果特征 B 的范圍是 5000 到 100000,您的模型會出現糟糕的響應。
要縮放數字數據,一種顯而易見的方法是將 [最小值,最大值] 以線性方式映射到較小的范圍,例如 [-1,+1]。
另一種熱門的縮放策略是計算每個值的 Z 得分。Z 得分與距離均值的標準偏差數相關。換而言之:
scaledvalue=(value?mean)/stddev.
例如,給定以下條件: * 均值 = 100 * 標準偏差 = 20 * 原始值 = 130 則: scaled_value = (130 - 100) / 20 scaled_value = 1.5 使用 Z 得分進行縮放意味著,大多數縮放后的值將介于 -3 和 +3 之間,而少量值將略高于或低于該范圍。處理極端離群值
還是舉加利福尼亞州住房數據集中的人均住房數的例子,有的極端值達到了50
對于這些極端值其實很好處理,無非幾個辦法
對數縮放
特征值限制到 某個上限或者下限
分箱分箱其實是一個形象化的說法,就是把數據分開來,裝在一個個箱子里,這樣一個箱子里的數據就是一家人了。
那有什么用呢?下面就舉個栗子!
在數據集中,latitude 是一個浮點值(因為是按照一片區域統計的,所以緯度肯的增長肯定是線性的了)。不過,在我們的模型中將 latitude 表示為浮點特征(將其看為一個浮點數,以它的數值大小為特征)沒有意義。這是因為緯度和房屋價值之間不存在線性關系(并不是那種緯度高房價就高)。例如,緯度 35 處的房屋并不比緯度 34 處的房屋貴 35/34(或更便宜)。但是,緯度或許能很好地預測房屋價值(在訓練之前,我們也不知道能不能呢,但是從之前的散點圖可以看出來,房價和位置的分布好像是有關系的,所以我們把緯度也作為特征),因為不是呈線性的關系了,所以把它作為分類特征會更好。(如果無法理解的話,就好好想想模型會怎么處理數值數據和分類數據),所以接下來我們將其分箱處理,如下圖。
我們現在擁有 11 個不同的布爾值特征(LatitudeBin1、LatitudeBin2、…、LatitudeBin11),而不是一個浮點特征。擁有 11 個不同的特征有點不方便,因此我們將它們統一成一個 11 元素矢量。這樣做之后,我們可以將緯度 37.4 表示為:
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
分箱之后,我們的模型現在可以為每個緯度學習完全不同的權重。(是不是覺得有點像獨熱編碼,沒錯,就是的)
為了簡單起見,我們在緯度樣本中使用整數作為分箱邊界。如果我們需要更精細的解決方案,我們可以每隔 1/10 個緯度拆分一次分箱邊界。添加更多箱可讓模型從緯度 37.4 處學習和維度 37.5 處不一樣的行為,但前提是每 1/10 個緯度均有充足的樣本可供學習。清查另一種方法是按分位數分箱,這種方法可以確保每個桶內的樣本數量是相等的。按分位數分箱完全無需擔心離群值。
截至目前,我們假定用于訓練和測試的所有數據都是值得信賴的。在現實生活中,數據集中的很多樣本是不可靠的,原因有以下一種或多種:
遺漏值。 例如,有人忘記為某個房屋的年齡輸入值。(值會為-1,所以要分為兩個特征,忘了的看上面)
重復樣本。 例如,服務器錯誤地將同一條記錄上傳了兩次。
不良標簽。 例如,有人錯誤地將一顆橡樹的圖片標記為楓樹。
不良特征值。 例如,有人輸入了多余的位數,或者溫度計被遺落在太陽底下。
一旦檢測到存在這些問題,通常需要將相應樣本從數據集中移除,從而“修正”不良樣本。要檢測遺漏值或重復樣本,可以編寫一個簡單的程序。檢測不良特征值或標簽可能會比較棘手。
除了檢測各個不良樣本之外,還必須檢測集合中的不良數據。直方圖是一種用于可視化集合中數據的很好機制。此外,收集如下統計信息也會有所幫助:
最大值和最小值
均值和中間值
標準偏差
考慮生成離散特征的最常見值列表,靠常識來判斷是否合理,是否適合自己觀察數據
了解數據遵循以下規則:
記住您預期的數據狀態。
確認數據是否滿足這些預期(或者您可以解釋為何數據不滿足預期)。
仔細檢查訓練數據是否與其他來源(例如信息中心)的數據一致。
像處理任何任務關鍵型代碼一樣謹慎處理您的數據。良好的機器學習依賴于良好的數據。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44676.html
此篇文章主要是給大家介紹了Python辦公系統批量編輯文檔完成實例詳細說明,感興趣的小伙伴可以參考借鑒一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早工作上得到晉升。 前言 說起在工作上最讓人頭大的便是用這樣的方法解決一大堆文件夾中文檔,這其實并不難,但是卻繁。因此當遇到腳踏式的操作過程中一定要注意應用Python來有效懶惰!這次我會以解決微博熱搜榜數據信息來實例怎么使用Python批...
小編寫這篇文章的主要目的,主要是用來給大家解釋,Python Sklearn當中,一些實用的隱藏功能,大概有19條,這些實用的隱藏技能,會給我們的工作和生活帶來很大的便利性,具體下文就給大家詳細的介紹一下。 今天跟大家介紹19個Sklearn中超級實用的隱藏的功能,這些功能雖然不常見,但非常實用,它們可以直接優雅地替代手動執行的常見操作。接下來我們就一個一個介紹這些功能,希望對大家有所幫助!...
摘要:經過長久的內部測試,現已經上線洛杉磯的第二個云基礎設施可用區,洛杉磯標簽線路下的日志線路,與洛杉磯第一個可用區一樣,增加了硬件設備清洗,且基礎版清洗服務默認開通,供您免費使用。CUBECLOUD怎么樣,CUBECLOUD好不好,CUBECLOUD(魔方云)成立于2016年,亞太互聯網絡信息中心(APNIC)會員,全線產品均為完全自營,專業數據災備冗余,全部產品均為SSD陣列,精品網絡CN2(...
摘要:為了滿足越來越多防護業務量的需求,因此內地高防在棗莊擴增了一個高防機房,現棗莊高防機房已上線使用,可以用于為大陸地區提供業務覆蓋的用戶保駕護航。產品特點棗莊高防即為我們的內地高防產品,功能和性能和內地高防保持一致。為了滿足越來越多DDoS防護業務量的需求,因此內地高防在棗莊擴增了一個高防機房,現棗莊高防機房已上線使用,可以用于為大陸地區提供業務覆蓋的用戶保駕護航。【產品特點】棗莊高防即為我們...
閱讀 1868·2021-11-22 09:34
閱讀 1141·2021-10-09 09:44
閱讀 3001·2021-09-29 09:35
閱讀 3617·2021-09-14 18:01
閱讀 1465·2021-08-16 10:49
閱讀 1084·2019-08-29 14:11
閱讀 849·2019-08-29 12:47
閱讀 3068·2019-08-26 13:47