摘要:導(dǎo)入庫(kù)導(dǎo)入數(shù)據(jù)集這一步的目的是將自變量和因變量拆成一個(gè)矩陣和一個(gè)向量。
數(shù)據(jù)預(yù)處理是機(jī)器學(xué)習(xí)中最基礎(chǔ)也最麻煩的一部分內(nèi)容
在我們把精力撲倒各種算法的推導(dǎo)之前,最應(yīng)該做的就是把數(shù)據(jù)預(yù)處理先搞定
在之后的每個(gè)算法實(shí)現(xiàn)和案例練手過(guò)程中,這一步都必不可少
同學(xué)們也不要嫌麻煩,動(dòng)起手來(lái)吧
基礎(chǔ)比較好的同學(xué)也可以溫故知新,再練習(xí)一下哈
閑言少敘,下面我們六步完成數(shù)據(jù)預(yù)處理
其實(shí)我感覺(jué)這里少了一步:觀察數(shù)據(jù)
此處輸入圖片的描述
這是十組國(guó)籍、年齡、收入、是否已購(gòu)買(mǎi)的數(shù)據(jù)
有分類(lèi)數(shù)據(jù),有數(shù)值型數(shù)據(jù),還有一些缺失值
看起來(lái)是一個(gè)分類(lèi)預(yù)測(cè)問(wèn)題
根據(jù)國(guó)籍、年齡、收入來(lái)預(yù)測(cè)是夠會(huì)購(gòu)買(mǎi)
OK,有了大體的認(rèn)識(shí),開(kāi)始表演。
Step 1:導(dǎo)入庫(kù)
import numpy as np import pandas as pd
Step 2:導(dǎo)入數(shù)據(jù)集
dataset = pd.read_csv("Data.csv") X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 3].values print("X") print(X) print("Y") print(Y)
這一步的目的是將自變量和因變量拆成一個(gè)矩陣和一個(gè)向量。
結(jié)果如下
X [["France" 44.0 72000.0] ["Spain" 27.0 48000.0] ["Germany" 30.0 54000.0] ["Spain" 38.0 61000.0] ["Germany" 40.0 nan] ["France" 35.0 58000.0] ["Spain" nan 52000.0] ["France" 48.0 79000.0] ["Germany" 50.0 83000.0] ["France" 37.0 67000.0]] Y ["No" "Yes" "No" "No" "Yes" "Yes" "No" "Yes" "No" "Yes"]
Step 3:處理缺失數(shù)據(jù)
from sklearn.preprocessing import Imputer imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0) imputer = imputer.fit(X[ : , 1:3]) X[ : , 1:3] = imputer.transform(X[ : , 1:3])
Imputer類(lèi)具體用法移步
http://scikit-learn.org/stabl...
本例中我們用的是均值替代法填充缺失值
運(yùn)行結(jié)果如下
Step 3: Handling the missing data step2 X [["France" 44.0 72000.0] ["Spain" 27.0 48000.0] ["Germany" 30.0 54000.0] ["Spain" 38.0 61000.0] ["Germany" 40.0 63777.77777777778] ["France" 35.0 58000.0] ["Spain" 38.77777777777778 52000.0] ["France" 48.0 79000.0] ["Germany" 50.0 83000.0] ["France" 37.0 67000.0]]
Step 4:把分類(lèi)數(shù)據(jù)轉(zhuǎn)換為數(shù)字
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0]) onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray() labelencoder_Y = LabelEncoder() Y = labelencoder_Y.fit_transform(Y) print("X") print(X) print("Y") print(Y)
LabelEncoder用法請(qǐng)移步
http://scikit-learn.org/stabl...
X [[1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01 7.20000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01 4.80000000e+04] [0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01 5.40000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01 6.10000000e+04] [0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01 6.37777778e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01 5.80000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01 5.20000000e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01 7.90000000e+04] [0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01 8.30000000e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01 6.70000000e+04]] Y [0 1 0 0 1 1 0 1 0 1]
Step 5:將數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)
X_train [[0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01 6.37777778e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01 6.70000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01 4.80000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01 5.20000000e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01 7.90000000e+04] [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01 6.10000000e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01 7.20000000e+04] [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01 5.80000000e+04]] X_test [[0.0e+00 1.0e+00 0.0e+00 3.0e+01 5.4e+04] [0.0e+00 1.0e+00 0.0e+00 5.0e+01 8.3e+04]] step2 Y_train [1 1 1 0 1 0 0 1] Y_test [0 0]
Step 6:特征縮放
from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() X_train = sc_X.fit_transform(X_train) X_test = sc_X.transform(X_test)
大多數(shù)機(jī)器學(xué)習(xí)算法在計(jì)算中使用兩個(gè)數(shù)據(jù)點(diǎn)之間的歐氏距離
特征在幅度、單位和范圍上很大的變化,這引起了問(wèn)題
高數(shù)值特征在距離計(jì)算中的權(quán)重大于低數(shù)值特征
通過(guò)特征標(biāo)準(zhǔn)化或Z分?jǐn)?shù)歸一化來(lái)完成
導(dǎo)入sklearn.preprocessing 庫(kù)中的StandardScala
用法:http://scikit-learn.org/stabl...
X_train [[-1. 2.64575131 -0.77459667 0.26306757 0.12381479] [ 1. -0.37796447 -0.77459667 -0.25350148 0.46175632] [-1. -0.37796447 1.29099445 -1.97539832 -1.53093341] [-1. -0.37796447 1.29099445 0.05261351 -1.11141978] [ 1. -0.37796447 -0.77459667 1.64058505 1.7202972 ] [-1. -0.37796447 1.29099445 -0.0813118 -0.16751412] [ 1. -0.37796447 -0.77459667 0.95182631 0.98614835] [ 1. -0.37796447 -0.77459667 -0.59788085 -0.48214934]] X_test [[-1. 2.64575131 -0.77459667 -1.45882927 -0.90166297] [-1. 2.64575131 -0.77459667 1.98496442 2.13981082]]
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/45242.html
摘要:第一天下來(lái)的感覺(jué)就是高大上,組織者高大上,贊助商們谷歌,,微軟,,,,,等高大上,更高大上就是會(huì)議地點(diǎn)舊金山,美的讓人樂(lè)不思京霾了。強(qiáng)力推薦來(lái)自的,原因是在舊金山聽(tīng)了場(chǎng)精彩絕倫的相聲,由和共同完成,不分捧逗。 SRECon17 第一天下來(lái)的感覺(jué)就是高大上, 組織者 USENIX ( Advanced Computing Systems Association )高大上,贊助商們(谷歌,...
摘要:第一天下來(lái)的感覺(jué)就是高大上,組織者高大上,贊助商們谷歌,,微軟,,,,,等高大上,更高大上就是會(huì)議地點(diǎn)舊金山,美的讓人樂(lè)不思京霾了。強(qiáng)力推薦來(lái)自的,原因是在舊金山聽(tīng)了場(chǎng)精彩絕倫的相聲,由和共同完成,不分捧逗。 SRECon17 第一天下來(lái)的感覺(jué)就是高大上, 組織者 USENIX ( Advanced Computing Systems Association )高大上,贊助商們(谷歌,...
摘要:而邏輯回歸對(duì)于這樣的問(wèn)題會(huì)更加合適。也就是說(shuō),邏輯回歸是用來(lái)得到樣本屬于某個(gè)分類(lèi)的概率。這樣構(gòu)造的損失函數(shù)是合理的,并且它還是一個(gè)凸函數(shù),十分方便求得參數(shù),使得損失函數(shù)達(dá)到最小。然后導(dǎo)入邏輯回歸類(lèi)。 邏輯回歸avik-jain介紹的不是特別詳細(xì),下面再?lài)Z叨一遍這個(gè)算法。 1.模型 在分類(lèi)問(wèn)題中,比如判斷郵件是否為垃圾郵件,判斷腫瘤是否為陽(yáng)性,目標(biāo)變量是離散的,只有兩種取值,通常會(huì)編碼為...
摘要:但是在這個(gè)過(guò)程中,遇到了一個(gè)請(qǐng)求無(wú)法獲取到的問(wèn)題。解決辦法安裝包再次打印三接下來(lái)幾天需要完成的工作大概看一下的并各寫(xiě)一篇博客登錄和注冊(cè)應(yīng)該使用有關(guān)的知識(shí)了解一下并寫(xiě)一篇博客。 vue nuxt koa2 mongodb 寫(xiě)博客(Day1) 一.利用nuxt初始化項(xiàng)目 初始化項(xiàng)目有兩種方法: 1.vue init nuxt-community/koa-template 此種方法...
摘要:生成隨機(jī)生成一個(gè)唯一的這個(gè)方法用于生成一個(gè)隨機(jī),可以將生成的視為全局唯一的生成兩個(gè)相同的情況很少。似乎在前端用的比較少,目前項(xiàng)目用到就是在每次請(qǐng)求后端接口時(shí)調(diào)用此方法,生成一個(gè)傳過(guò)去。 前言 以下代碼來(lái)自:自己寫(xiě)的、工作項(xiàng)目框架上用到的、其他框架源碼上的、網(wǎng)上看到的。 主要是作為工具函數(shù),服務(wù)于框架業(yè)務(wù),自身不依賴(lài)于其他框架類(lèi)庫(kù),部分使用到es6/es7的語(yǔ)法使用時(shí)要注意轉(zhuǎn)碼 雖然盡...
閱讀 2184·2021-11-11 16:55
閱讀 3249·2021-10-11 10:58
閱讀 3207·2021-09-13 10:28
閱讀 4144·2021-07-26 23:57
閱讀 1143·2019-08-30 15:56
閱讀 1409·2019-08-29 13:15
閱讀 1336·2019-08-26 18:18
閱讀 1360·2019-08-26 13:44