从Pandas形式的虹膜数据集到sklearn形式的有效方法?

2024-03-29 09:46:14 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将iris数据集的Pandas版本转换为sk-learn使用的格式?你知道吗

#Seaborn dataset
import seaborn as sns
iris_seaborn = sns.load_dataset("iris")


sepal_length    sepal_width petal_length    petal_width species
0   5.1 3.5 1.4 0.2 setosa
1   4.9 3.0 1.4 0.2 setosa
2   4.7 3.2 1.3 0.2 setosa
3   4.6 3.1 1.5 0.2 setosa
4   5.0 3.6 1.4 0.2 setosa

Sci工具包学习:

#sk-learn dataset
from sklearn.datasets import load_iris
iris_sklearn = load_iris()

[Out] array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])


iris_sklearn.target[0:5]

[Out] array([0, 0, 0, 0, 0])

我知道这些步骤是分别对数值和分类数据使用sklearn.preprocessing.MinMaxScalersklearn.preprocessing.LabelEncoder对列进行规范化。但除了对每一列进行处理,然后将它们与zip()组合在一起,我不知道还有什么更有效的方法。你知道吗

感谢您的帮助!你知道吗


Tags: 数据importirisloadsklearnseabornwidthlearn
2条回答

您可以factorize标签,然后对其余数据使用底层numpy数组:

target = pd.factorize(iris_seaborn.species)[0]
# alternatively:
# target = pd.Categorical(iris_seaborn.species).codes
# or 
# target = iris_seaborn.species.factorize()[0]

data = iris_seaborn.iloc[:,:-1].values

# look at start of data:
>>> data[:5,:]
array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])

# and of target:
>>> target[:5]
array([0, 0, 0, 0, 0])

相关问题 更多 >