機器學習乙個小目標 Task5

2021-09-01 12:14:11 字數 4008 閱讀 4553

@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 按老師要求來先做一遍,再求完美,不能在乙個問題上耗費太久的時間。最後希望這五個月我學有所成,能找到乙份滿意的工作。土地是以它的肥沃和收穫...