代码之家  ›  专栏  ›  技术社区  ›  max

从熊猫形式的虹膜数据集到sk学习形式的有效方法?

  •  1
  • max  · 技术社区  · 6 年前

    如何将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.MinMaxScaler sklearn.preprocessing.LabelEncoder 分别用于数字和分类数据。但是我不知道有什么比把每一个专栏都写下来,然后把它们放在一起更有效的方法了 zip() .

    感谢您的帮助!

    1 回复  |  直到 6 年前
        1
  •  2
  •   sacuL    6 年前

    你可以 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])