2016-10-16 2 views
0

поэтому я пытаюсь сделать проект, который просит сделать одно горячее кодирование для определенной части. но я понятия не имею, как его использовать. Я использовал Google, чтобы попытаться понять, но я просто не могу понять. мой вопрос ниже.Как использовать onehotcoding

Теперь мы также хотим использовать категориальные функции! Таким образом, мы должны выполнить OneHotEncoding для категориальных функций. Для этого каждая категориальная функция должна заменить фиктивными столбцами в таблице функций (один столбец для каждого возможного значения категориальной функции), а затем закодировать его двоичным образом таким образом, чтобы не более один из манекенов столбцы могут принимать «1» за раз (и ноль для остальных). Например, «Пол» может принимать два значения «m» и «f». Таким образом, мы должны заменить эту функцию (в таблице функций ) на два столбца под названием «m» и «f». Где бы мы ни находились, у нас есть субъект-мужчина, может помещать «1» и «0» в столбцы «m» и «f». Где бы мы ни находились, у нас есть женщина, мы можем поставить «0» и «1» в столбцах «m» и «f». (Подсказка: вам понадобится 4 столбца для кодирования «ChestPain» и 3 столбца для кодирования «Thal»).

мой код до сих пор это,

# a- Read the dataset from the following URL: 
# and assign it to a Pandas DataFrame 

heart_d = pd.read_csv("C:/Users/Michael/Desktop/HW2/Heart_s.csv") 


feature_cols = ['Age','RestBP','Chol','RestECG','MaxHR','Oldpeak'] 
X = heart_d[feature_cols] 

y = heart_d['AHD'] 

# Randomly splitting the original dataset into training set and testing set 
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=3) 

это работает до сих пор, но теперь я должен использовать этот один горячий кодирования для catagorical вещи, но им совершенно потерял с тем, как это работает. 3 категориальных элемента в наборе данных (Пол, ChestPain, Thal). я попробовал делаю это

df_cp = pd.get_dummies(heart_d['ChestPain']) 
df_g = pd.get_dummies(heart_d['Gender']) 
df_t = pd.get_dummies(heart_d['Thal']) 

df_new = pd.concat([df, df_cp,df_g,df_t ], axis=1) 

, но им не уверен, Thats работает, когда я запускаю классификации я получаю тот же ответ на все

ответ

1

Я думаю, вы можете использовать scikit-learn для поезда данных, вот один горячий кодер пример в it:

from sklearn.preprocessing import OneHotEncoder 
>>> enc = OneHotEncoder() 
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) 
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>, 
    handle_unknown='error', n_values='auto', sparse=True) 
>>> enc.n_values_ 
array([2, 3, 4]) 
>>> enc.feature_indices_ 
array([0, 2, 5, 9]) 
>>> enc.transform([[0, 1, 1]]).toarray() 
array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]]) 

==== ==== ОБНОВЛЕНИЕ

я пишу одну деталь пример о том, как использовать один горячий кодер для S Тринг атрибуты, с DictVectorizer

import pandas as pd 
from sklearn.feature_extraction import DictVectorizer as DV   

d = [ 
    {'country':'A', 'Gender':'M'}, 
    {'country':'B', 'Gender':'F'},         
    {'country':'C', 'Gender':'F'} 
]    
df = pd.DataFrame(d)            
print df   
test_d = [ 
    {'country':'A', 'Gender':'F'},         
    {'country':'B', 'Gender':'F'} 

]                 
test_df = pd.DataFrame(test_d) 
print test_df              

train_x = df.T.to_dict().values()         
vx = DV(sparse=False) 

transform_x = vx.fit_transform(train_x) 
print 'transform_train_df' 
print transform_x 

test_x = test_df.T.to_dict().values() 
transform_test_x = vx.transform(test_x) 
print 'transform_test_df' 
print transform_test_x            

выход:

Gender country 
0  M  A 
1  F  B 
2  F  C 
    Gender country 
0  F  A 
1  F  B 
transform_train_df 
[[ 0. 1. 1. 0. 0.] 
[ 1. 0. 0. 1. 0.] 
[ 1. 0. 0. 0. 1.]] 
transform_test_df 
[[ 1. 0. 1. 0. 0.] 
[ 1. 0. 0. 1. 0.]] 
+0

да ив, глядя на этот пример всю ночь лол, я не понимаю, как я мог бы использовать мои данные в этом. и я не получаю то, что 3 массива внизу – lupejuares

+0

Я добавляю пример детали в свой ответ – linpingta

+0

спасибо за пример! – lupejuares