मैं मशीन-लर्निंग क्लासिफायर के लिए श्रेणीबद्ध चर को संख्यात्मक में बदलने के लिए अलग-अलग तरीके सीख रहा हूं। मैं pd.get_dummies
विधि के पार आया sklearn.preprocessing.OneHotEncoder()
और मैं यह देखना चाहता था कि प्रदर्शन और उपयोग के मामले में वे कैसे भिन्न हैं।
मैं कैसे उपयोग करने के लिए पर एक ट्यूटोरियल पाया OneHotEncoder()
पर https://xgdgsc.wordpress.com/2015/03/20/note-on-using-onehotencoder-in-scikit-learn-to-work-on-categorical-features/ के बाद से sklearn
प्रलेखन इस सुविधा पर भी सहायक नहीं था। मुझे लग रहा है कि मैं इसे सही तरीके से नहीं कर रहा हूं ... लेकिन
कुछ पेशेवरों और विपक्ष का उपयोग करने का व्याख्या कर सकते हैं pd.dummies
भर में sklearn.preprocessing.OneHotEncoder()
और इसके विपरीत? मुझे पता है कि OneHotEncoder()
आप एक विरल मैट्रिक्स देता है, लेकिन इसके अलावा, मुझे यकीन नहीं है कि इसका उपयोग कैसे किया जाता है और pandas
विधि पर क्या लाभ हैं । क्या मैं इसका अकुशल उपयोग कर रहा हूं?
import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
sns.set()
%matplotlib inline
#Iris Plot
iris = load_iris()
n_samples, m_features = iris.data.shape
#Load Data
X, y = iris.data, iris.target
D_target_dummy = dict(zip(np.arange(iris.target_names.shape[0]), iris.target_names))
DF_data = pd.DataFrame(X,columns=iris.feature_names)
DF_data["target"] = pd.Series(y).map(D_target_dummy)
#sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \
#0 5.1 3.5 1.4 0.2
#1 4.9 3.0 1.4 0.2
#2 4.7 3.2 1.3 0.2
#3 4.6 3.1 1.5 0.2
#4 5.0 3.6 1.4 0.2
#5 5.4 3.9 1.7 0.4
DF_dummies = pd.get_dummies(DF_data["target"])
#setosa versicolor virginica
#0 1 0 0
#1 1 0 0
#2 1 0 0
#3 1 0 0
#4 1 0 0
#5 1 0 0
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
def f1(DF_data):
Enc_ohe, Enc_label = OneHotEncoder(), LabelEncoder()
DF_data["Dummies"] = Enc_label.fit_transform(DF_data["target"])
DF_dummies2 = pd.DataFrame(Enc_ohe.fit_transform(DF_data[["Dummies"]]).todense(), columns = Enc_label.classes_)
return(DF_dummies2)
%timeit pd.get_dummies(DF_data["target"])
#1000 loops, best of 3: 777 µs per loop
%timeit f1(DF_data)
#100 loops, best of 3: 2.91 ms per loop