@toc
【任務五-特徵工程1】關於資料型別轉換以及缺失值處理(嘗試不同的填充看效果)以及你能借鑑的資料探索
svm模型訓練時一直卡住不動,【原因是資料沒有標準化或者是歸一化】
刪去無關特徵
對每一列的資料進行統計,如果這一列的資料每乙個都不同,即判斷為無關特徵並且刪去。
for i in data.columns:
count = data[i]
.count()if
len(
list
(data[i]
.unique())
)in[1
,count,count-1]
: data.drop(i,axis =
1,inplace=
true
)
data.fillna(
0, inplace=
true
)#
考慮給某列的缺失值,填充為該列的眾數,由於眾數可能存在多個,所以pandas返回的是乙個series,而不像mean()返回的是乙個值,預設取第乙個眾數。(目前沒有找到一次填充完成的方法)
col.fillna(col.mode()[
0], inplace=
true
)
data = pd.read_csv(path +
'data_set/data.csv'
,encoding=
'gbk'
)filter_feature =
['status'
]# 過濾無用的維度
features =
for x in data.columns:
# 取特徵
if x not
in filter_feature:
data.fillna(data.mode(
),inplace=
true
)# 填充眾數,該資料缺失太多眾數出現為nan的情況
features_mode =
for f in features:
features_mode[f]
=list
(data[f]
.dropna(
).mode(
).values)[0
]data.fillna(features_mode,inplace=
true
)temp1=data.isnull(
)num=
(temp1 ==
true
).astype(
bool).
sum(axis=
1)
data.fillna(data.mean(
),inplace=
true
)
# 用前乙個資料進行填充
data = data.fillna(method=
'pad'
)# 用後乙個資料進行填充
data = data.fillna(method=
'bfill'
)
data = data.interpolate(
)
**如下:
from sklearn.preprocessing import imputer
import numpy as np
#匯入要進行缺失值處理的資料檔案,資料檔案上面有展示
data = np.genfromtxt(
'input.csv'
, skip_header=
true
, delimiter=
',')
imp = imputer(missing_values=
'nan'
, strategy=
'mean'
, axis=0)
#上面'nan'表示無效值在資料檔案中的標識是'nan',strategy='mean'表示用全域性平均值代替無效值,axis=0表示對列進行處理
imp.fit(data)
#訓練乙個缺失值處理模型
outfile = imp.transform(data)
這裡需要安裝fancyimpute 包
具體步驟:
conda install ecos
conda install cvxcanon
安裝visual c++
安裝tensorflow
安裝fancyimpute
更新numpy
from fancyimpute import biscaler, knn, nuclearnormminimization, softimpute
# 用knn進行填充
x_filled_knn = knn(k=3)
.fit_transform(data)
# matrix completion using convex optimization to find low-rank solution,that still matches observed values. slow!
#(用凸優化法求矩陣補全的低秩解,這仍然與觀測值相匹配。比較慢!————以上翻譯結果來自機器翻譯,僅供參考,)
x_filled_nnm = nuclearnormminimization(
).fit_transform(data)
# instead of solving the nuclear norm objective directly, instead induce sparsity using singular value thresholding
#(採用奇異值閾值法誘導稀疏性,而不是直接求解核範數目標————以上翻譯結果來自機器翻譯,僅供參考,)
x_filled_softimpute = softimpute(
).fit_transform(x_incomplete_normalized)
以上**於網路,不太理解
訓練模型填充空值(fill null)的幾種方法
使用對映,把不同的非數值型別轉換成數值型別
n =
set(data[
'id_name'])
dic =
for i, j in
enumerate
(n):
dic[j]
= idata[
'id_name'
]= data[
'id_name'].
map(dic)
資料標準化
資料標準化,公式為:(x−
xmea
n)xs
td
\frac)}}
xstd(
x−xm
ean
)計算時對每個屬性/每列分別進行
from sklearn import preprocessing
zdata = preprocessing.scale(data)
資料歸一化
資料縮至0-1之間,每一行表示乙個樣本,每一列表示乙個特徵引數
公式為x′=
x−xm
axxm
ax−x
mi
nx^=\frac}-x_}
x′=xma
x−x
min
x−xm
ax
from sklearn import preprocessing
min_max_scale = preprocessing.minmaxscaler(
)min_max_data = min_max_scale.fit_transform(data)
《李巨集毅機器學習》task5
假定 lr邏輯回歸假設樣本服從泊松0 1分布,因此p y x 表示式 求最大似然估計 進而求最大對數似然估計 損失函式 損失函式表徵 值與真實值之間的差異程度,如果 值與真實值越接近則損失函式應該越小。在此損失函式可以取為最大似然估計函式的相反數,其次除以m這一因子並不改變最終求導極值結果,通過除以...
如何從實現乙個小目標,到大目標
如何從實現乙個小目標,到大目標 很多時候有很多想法,想去實現,但大部分時候都是想想就過去了,原因是什麼?1 動力 可能因為想的不夠深入,只能想到表面,想不到深層次,長期的結果,以此作為動力。如果想想百萬千萬的錢在等著自己,那肯定超有動力 2 執行力 可能因為動力不足,也可能就是懶 3 成就感 大的目...
制定乙個學習liunx的目標
1 在這五個月的學習時間裡,制定一套自己的學習方式。2 養成做筆記以及寫部落格的習慣 3 堅持上課前預習,自習時間總結 4 緊跟教學要求,按時按量完成教學目標。5 按老師要求來先做一遍,再求完美,不能在乙個問題上耗費太久的時間。最後希望這五個月我學有所成,能找到乙份滿意的工作。土地是以它的肥沃和收穫...