【问题标题】:Linear discriminant analysis from sklearnsklearn 的线性判别分析
【发布时间】:2020-02-03 16:53:58
【问题描述】:

我遇到了 sklearn.discriminant_analysis 无法识别输入的问题。

我已经将所有标签从 str 更改为数值。

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
print(labels)
print(type(labels))
Fit_Features_2 = LDA(n_components = 1)
Fit_Features_2 = LDA.fit(features_NiFe, labels)

#The type for labels
<class 'pandas.core.frame.DataFrame'>

TypeError: fit() 缺少 1 个必需的位置参数:'y'

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    你需要使用LDA的实例。

    改变

    Fit_Features_2 = LDA.fit(features_NiFe, labels)
    

    Fit_Features_2 .fit(features_NiFe, labels)
    

    确保标签是数组类型。 所以使用df.to_numpy()将数据帧转换为numpy数组

    还要检查拟合函数的 X 和 y 参数的尺寸

            X : array-like, shape (n_samples, n_features)
                Training data.
            y : array, shape (n_samples,)
                Target values.
    

    【讨论】:

    • 我这样做了,我得到了这个错误 - 所以我需要将标签更改为数组?即使 features 也是一个 pd 数据框? C:\ProgramData\Anaconda3\lib\site-packages\sklearn\utils\validation.py:578:DataConversionWarning:当需要一维数组时,传递了列向量 y。请将 y 的形状更改为 (n_samples, ),例如使用 ravel()。 y = column_or_1d(y, warn=True)
    • 所以我把 y 改成了一维数组,labels = np.array(labels) print(labels) labels = labels.reshape(1,24) Fit_Features_2 = LDA(n_components = 2) Fit_Features_2 = Fit_Features_2 .fit(features_NiFe, labels) 现在的错误是,ValueError: bad input shape (1, 24)
    • 我认为应该是列向量。形状 24, 1
    • 使用这种格式,它仍然会给出“请改变 y 的形状”错误
    • 你必须使用np.squeeze
    猜你喜欢
    • 2022-06-22
    • 2013-06-19
    • 2013-12-10
    • 2018-07-08
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多