1 概述
1.1 資料探索
檢查資料錯誤,了解資料分布特征和內在規律
1.2 資料預處理
資料清洗 Data cleaning
資料集成 Data integration
資料變換 Data transformation
資料規約 Data reduction
2 資料清洗
2.1 缺失值處理
洗掉
填充:固定值、均值、中位數、上下資料、插值函式、最可能的值(回歸分析填充)
舉例:DataFrame缺失值處理
x = pd.read_csv('A.csv',index_col='Date')
#檢測空值
x.isnull()
#暴力處理,直接洗掉空資料,all代表全部為null才洗掉,默認是只要有空值就洗掉
x.dropna(how='all')
x.dropna()
#資料填充
x.fillna(x.mean(),inplace=True)
#上一個值填充
x.fillna(method='ffill')
#下一個值填充
x.fillna(method='bfill')
2.2 例外值處理
觀察例外值:簡單統計、繪圖、基于密度聚類等方法
使用方法:describe()、boxplot()等
處理:同缺值填充、區域均值
x = pd.read_csv('A.csv',index_col='Date')
x.fillna(x.mean(),inplace=True)
#可使用一些方法觀察
x.describe()
#繪制箱型圖前洗掉不在一個數量級的資料
x.iloc[:,0:4]
#箱型圖例外值判斷:按照1/4位置距離判斷
x.drop('Volume',axis=1).boxplot()
#自定義規則,3c原則,即資料在[u-3c,u+3c]之間,代表均值與標準差的關系
x[abs(x-x.mean())>3*x.std()].dropna(how='all')
3 資料變換
3.1 介紹
把資料變成合適的形式,常見方式有規范化、連續屬性離散化和特征二值化
3.2 資料規范化(歸一化)
常見方法:最小-最大規范化、z-score規范化、小數定標規范化
import pandas as pd
df=pd.DataFrame(A.data[:,3:6])
df.columns=A.feature_names[3:6]
#最小-最大規范化,支持矢量運算
(df-df.min())/(df.max()-df.min())
#使用sklearn中的preprocessing模塊
from sklearn import preprocessing
preprocessing.minmax_scale(df)
#z-score規范化:結果=(數值-均值)/標準差,處理后資料的均值為0,標準差為1
(df-df.mean())/df.std()
#使用sklearn中的preprocessing模塊
from sklearn import preprocessing
preprocessing.scale(df)
#小數定標規范化:常見落在[-1,1]區間,通過移動小數點的位數實作,移動位數取決于屬性絕對值的最大值的位數
#ceil向上取整
import numpy as np
df/10**np.ceil(np.log10(df.abs().max()))
3.3 連續屬性離散化
常見方法:分箱法(等寬法、等頻法)、聚類
import pandas as pd
#等寬法,5個箱子,標簽為0-4
pd.cut(df.AGE,5,label=range(5))
#等頻法
pd.qcut(df.AGE,5,label=range(5))
3.4 特征二值化
將多分類問題—>二分類問題
#使用sklearn中的preprocessing模塊
from sklearn import preprocessing
#轉換維度
x=boston.target.reshape(-1,1)
Binarizer(threshold=20.0).fit_transform(x)
4 資料規約
4.1 介紹
緩解維數災難,獲得一個比原資料集小的多的規約表示
常用方法:
屬性規約:向前選擇、向后洗掉、決策樹、PCA
數值規約:有參方法(回歸等)、無參法(直方圖、聚類、抽樣等)
4.2 PCA
from sklearn.decomposition import PCA
x=preprocessing.scale(df)
#n_components保留的特征個數,mle為自動選擇
pca=PCA(n_components=3)
pca.fit(x)
#回傳:各個成分方差百分比即變數的方差貢獻率
pca.explained_variance_ratio_
4.3 直方圖
用分箱表示資料分布,每個箱子代表一個屬性-頻率對
與條形圖有本質區別
import numpy as np
import matplotlib.pyplot as plt
data=np.random.randint(1,10,50)
#生成直方圖,比如1出現5次,則y軸就是5
plt.hist(data)
#基于三個點把區間分成兩個,一個是[1,5),另外一個是[5,9]
bins=np.linspace(data.min(),data.max(),3,endpoint=True)
#分成了兩個箱子展示
plt.hist(data,bins=bins,rwidth=0.95,edgecolor='k')
4.4 抽樣
隨機抽樣(放回和不放回)、聚類抽樣和分層抽樣
from sklearn import datasets
import pandas as pd
iris=datasets.load_iris()
iris_df=pd.DataFrame(iris.data)
iris_df.columns=iris.feature_names
#抽樣函式,抽樣個數、百分比
iris_df.sample(n=10)
iris_df.sample(frac=0.2)
#放回抽樣
iris_df.sample(n=15,replace=True)
iris_df['target']=iris.target
#先選擇屬性為0,然后同隨機抽樣做法
A=iris_df[iris_df.target==0].sample(frac=0.2)
#先選擇屬性為2,然后同隨機抽樣做法
B=iris_df[iris_df.target==2].sample(frac=0.1)
#將A、B結果合并
A.append(B)
參考資料:
https://www.icourse163.org/learn/NJU-1001571005?tid=1463102441&from=study#/learn/content?type=detail&id=1240380190&cid=1261816421&replay=true 用python玩轉資料
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283156.html
標籤:AI
上一篇:華為有哪些高科技技術?
