سؤال

أحاول تنفيذ هذا الرمز على بيثون. يشير هذا الرمز إلى LDA ، من Sklearn.

import numpy as np
from sklearn.lda import LDA

X = np.array ([0.000000, 0.000000, 0.000000, 0.000000, 0.001550, 
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 
               0.000000, 0.000000, 0.201550, 0.011111, 0.077778,
               0.011111, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.092732, 0.000000, 0.000000, 0.000000,
               0.000000, 0.035659, 0.000000, 0.000000, 0.000000,
               0.000000, 0.066667, 0.000000, 0.000000, 0.010853,
               0.000000, 0.033333, 0.055556, 0.055556, 0.077778, 
               0.000000, 0.000000, 0.000000, 0.268170, 0.000000, 
               0.000000, 0.000000, 0.000000, 0.130233, 0.000000, 
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.034109, 0.077778, 0.055556, 0.011111, 
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.155388, 0.000000, 0.000000, 0.000000, 0.000000,
               0.181395, 0.000000, 0.000000, 0.000000, 0.000000,
               0.001550, 0.007752, 0.000000, 0.000000, 0.000000, 
               0.000000, 0.000000, 0.011111, 0.088889, 0.033333,
               0.000000, 0.000000, 0.142857, 0.000000, 0.000000,
               0.000000, 0.000000, 0.093023, 0.000000, 0.000000,
               0.000000, 0.000000, 0.000000, 0.009302, 0.010853, 
               0.000000, 0.100000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.022222, 0.088889, 0.033333, 0.238095,
               0.000000, 0.000000, 0.000000, 0.000000, 0.032558,
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.182946, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.000000, 0.022222, 0.077778, 0.055556,
               0.000000, 0.102757])

y = np.array ([0.000000, 0.000000, 0.008821, 0.000000, 0.000000, 
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.000000, 0.179631, 0.010471, 0.036649,
               0.026178, 0.000000, 0.000000, 0.020942, 0.010471,
               0.000000, 0.109215, 0.000000, 0.000000, 0.060144, 
               0.000000, 0.042502, 0.000000, 0.005613, 0.000000,
               0.000000, 0.018444, 0.000000, 0.000000, 0.013633,
               0.020942, 0.031414, 0.083770, 0.015707, 0.041885,
               0.041885, 0.057592, 0.010471, 0.233788, 0.000000,
               0.000000, 0.018444, 0.000000, 0.000000, 0.000000,
               0.000000, 0.000000, 0.090617, 0.000000, 0.000000,
               0.000000, 0.104250, 0.005236, 0.020942, 0.031414,
               0.000000, 0.000000, 0.010471, 0.015707, 0.005236,
               0.056314, 0.000000, 0.000000, 0.026464, 0.000000,
               0.004010, 0.000000, 0.031275, 0.007217, 0.036889,
               0.007217, 0.013633, 0.000000, 0.000000, 0.005236,
               0.047120, 0.057592, 0.015707, 0.010471, 0.047120,
               0.062827, 0.005236, 0.262799, 0.000000, 0.000000,
               0.000000, 0.000000, 0.000802, 0.000000, 0.000000,
               0.000000, 0.001604, 0.000000, 0.052927, 0.000000,
               0.039294, 0.026178, 0.041885, 0.031414, 0.000000,
               0.000000, 0.041885, 0.073298, 0.000000, 0.308874,
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.000000, 0.000000, 0.000000, 0.000000,
               0.236568, 0.000000, 0.000000, 0.000000, 0.000000,
               0.000000, 0.000000, 0.000000, 0.020942, 0.015707,
               0.000000, 0.029010])

clf = lda () clf.fit (x ، y) print (clf.predict ([0 ، 2]))

وأظهر لي رسالة الخطأ هذه:

clf.fit(X, y)
n_samples, n_features = X.shape
ValueError: need more than 1 value to unpack

ماذا أفعل لإصلاحه؟ لم أتمكن من العثور على هذا الحل على الوثائق.

هل كانت مفيدة؟

المحلول

صفيفك هو أبعاد واحدة. عندما تفعل:

n_samples, n_features = X.shape

X.Shape ليست مصفوفة من العينات والخيوط ولكنها مجموعة من الشكل (106 ،). تحتاج أكثر من عينة واحدة. كما هو الحال ، لديك مجموعة من الميزات وعينة واحدة. سيتم تعريف مصفوفة من 4 عينات مع 4 ميزات على النحو التالي:

featureMat = np.array([[ 10, 30, 40, 50],
                       [ 5,  6,  7,  8],
                       [ 54, 75, 6,  56],
                       [ 65, 34, 23, 22]])

لذلك سيكون featuremat.shape (4،4).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top