как использовать onehotcoding

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

Теперь мы также хотим использовать категориальные функции! Таким образом, мы должны выполнить OneHotEncoding для категориальных функций. Для этого каждая категориальная функция должна быть заменена фиктивными столбцами в таблице функций (по одному столбцу для каждого возможного значения категориальной функции), а затем закодировать ее двоично, так что в лучшем случае может быть только один из фиктивных столбцов a € ?1a € ?? в то время (и ноль для остальных). Например, «Gender» может принимать два значения: и ". Таким образом, мы должны заменить эту функцию (в таблице функций) на два столбца под названием «ma €» и ". Где бы мы ни были, у нас есть мужская тема, мы можем поставить «1» и «0» в колонках «мама» и ". Где бы мы ни находились, мы можем поставить «0» и «1» в колонках «мама» и ". (Подсказка: вам понадобится 4 столбца для кодирования «ChaptPain» и 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)

это работает до сих пор, но теперь я должен использовать эту горячую кодировку для каталогического материала, но я полностью потерял ее, как это работает. 3 категориальными чертами в наборе данных являются (Gender, 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)

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

python,scikit-learn,jupyter,jupyter-notebook,

0

Ответов: 1


1 принят

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

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.]])

==== UPDATE ====

Я пишу один подробный пример о том, как использовать горячий кодер для строковых атрибутов, с 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.]]
питон, scikit учиться, jupyter, jupyter-ноутбук,
Похожие вопросы