摘要:導入庫導入數據集這一步的目的是將自變量和因變量拆成一個矩陣和一個向量。
數據預處理是機器學習中最基礎也最麻煩的一部分內容
在我們把精力撲倒各種算法的推導之前,最應該做的就是把數據預處理先搞定
在之后的每個算法實現和案例練手過程中,這一步都必不可少
同學們也不要嫌麻煩,動起手來吧
基礎比較好的同學也可以溫故知新,再練習一下哈
閑言少敘,下面我們六步完成數據預處理
其實我感覺這里少了一步:觀察數據
此處輸入圖片的描述
這是十組國籍、年齡、收入、是否已購買的數據
有分類數據,有數值型數據,還有一些缺失值
看起來是一個分類預測問題
根據國籍、年齡、收入來預測是夠會購買
OK,有了大體的認識,開始表演。
Step 1:導入庫
import numpy as np import pandas as pd
Step 2:導入數據集
dataset = pd.read_csv("Data.csv") X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 3].values print("X") print(X) print("Y") print(Y)
這一步的目的是將自變量和因變量拆成一個矩陣和一個向量。
結果如下
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:處理缺失數據
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類具體用法移步
http://scikit-learn.org/stabl...
本例中我們用的是均值替代法填充缺失值
運行結果如下
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:把分類數據轉換為數字
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用法請移步
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:將數據集分為訓練集和測試集
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)
大多數機器學習算法在計算中使用兩個數據點之間的歐氏距離
特征在幅度、單位和范圍上很大的變化,這引起了問題
高數值特征在距離計算中的權重大于低數值特征
通過特征標準化或Z分數歸一化來完成
導入sklearn.preprocessing 庫中的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]]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/45242.html
摘要:第一天下來的感覺就是高大上,組織者高大上,贊助商們谷歌,,微軟,,,,,等高大上,更高大上就是會議地點舊金山,美的讓人樂不思京霾了。強力推薦來自的,原因是在舊金山聽了場精彩絕倫的相聲,由和共同完成,不分捧逗。 SRECon17 第一天下來的感覺就是高大上, 組織者 USENIX ( Advanced Computing Systems Association )高大上,贊助商們(谷歌,...
摘要:第一天下來的感覺就是高大上,組織者高大上,贊助商們谷歌,,微軟,,,,,等高大上,更高大上就是會議地點舊金山,美的讓人樂不思京霾了。強力推薦來自的,原因是在舊金山聽了場精彩絕倫的相聲,由和共同完成,不分捧逗。 SRECon17 第一天下來的感覺就是高大上, 組織者 USENIX ( Advanced Computing Systems Association )高大上,贊助商們(谷歌,...
摘要:而邏輯回歸對于這樣的問題會更加合適。也就是說,邏輯回歸是用來得到樣本屬于某個分類的概率。這樣構造的損失函數是合理的,并且它還是一個凸函數,十分方便求得參數,使得損失函數達到最小。然后導入邏輯回歸類。 邏輯回歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個算法。 1.模型 在分類問題中,比如判斷郵件是否為垃圾郵件,判斷腫瘤是否為陽性,目標變量是離散的,只有兩種取值,通常會編碼為...
摘要:但是在這個過程中,遇到了一個請求無法獲取到的問題。解決辦法安裝包再次打印三接下來幾天需要完成的工作大概看一下的并各寫一篇博客登錄和注冊應該使用有關的知識了解一下并寫一篇博客。 vue nuxt koa2 mongodb 寫博客(Day1) 一.利用nuxt初始化項目 初始化項目有兩種方法: 1.vue init nuxt-community/koa-template 此種方法...
摘要:生成隨機生成一個唯一的這個方法用于生成一個隨機,可以將生成的視為全局唯一的生成兩個相同的情況很少。似乎在前端用的比較少,目前項目用到就是在每次請求后端接口時調用此方法,生成一個傳過去。 前言 以下代碼來自:自己寫的、工作項目框架上用到的、其他框架源碼上的、網上看到的。 主要是作為工具函數,服務于框架業務,自身不依賴于其他框架類庫,部分使用到es6/es7的語法使用時要注意轉碼 雖然盡...
閱讀 2100·2021-11-11 16:55
閱讀 3171·2021-10-11 10:58
閱讀 3038·2021-09-13 10:28
閱讀 3967·2021-07-26 23:57
閱讀 1005·2019-08-30 15:56
閱讀 1331·2019-08-29 13:15
閱讀 1258·2019-08-26 18:18
閱讀 1266·2019-08-26 13:44