Sto provando a eseguire la classificazione multilabel con SVM. Ho quasi 8k e ho anche un vettore di lunghezza con quasi 400. Ho già vettori Y binarizzati, quindi non ho usato MultiLabelBinarizer()
ma quando lo uso con il modulo raw dei miei dati Y, restituisce sempre la stessa cosa.Scikit-Learn: Label not x è presente in tutti gli esempi di formazione
Io corro questo codice:
X = np.genfromtxt('data_X', delimiter=";")
Y = np.genfromtxt('data_y', delimiter=";")
training_X = X[:2600,:]
training_y = Y[:2600,:]
test_sample = X[2600:2601,:]
test_result = Y[2600:2601,:]
classif = OneVsRestClassifier(SVC(kernel='rbf'))
classif.fit(training_X, training_y)
print(classif.predict(test_sample))
print(test_result)
Dopo tutto attacco di processo quando si tratta di una parte di previsione, si dice Label not x is present in all training examples
(x è un paio di numeri diversi nella gamma della mia y lunghezza del vettore, che è 400) . Dopodiché fornisce un vettore y previsto che è sempre un vettore zero con una lunghezza di 400 (lunghezza del vettore y). Sono nuovo in scikit-learn e anche in machine learning. Non sono riuscito a capire il problema qui. Qual è il problema e cosa dovrei fare per risolverlo? Grazie.
Ciao, grazie per una risposta con molte cose utili. Ho provato 'Y.sum (axis = 0) .all()' e ha restituito True. Inoltre, ho provato 'Y.mean (axis = 0) .max()' e ha restituito '0.315981070258'. Devo ancora implementare un 'clf.decision_function'? Puoi essere più specifico a riguardo, come implementarlo e così? Mi dispiace, sono molto nuovo in queste cose, quindi non potevo capire cosa fare con 'decision_function'. – malisit
Sto dicendo che se stai ricevendo tutti i pronostici zero e sai che ci dovrebbero essere alcuni 1 in là, potresti provare a ottenere valori decisionali invece, e prevedere 1 ogni volta che è al di sopra di qualche soglia.Le tue etichette previste sarebbero: '(valore_corsa> soglia) .astipo (float)'. La soglia sarà inferiore a 0, poiché 0 è la soglia utilizzata dal classificatore e non riceve alcun risultato positivo. In alternativa, se sai che esiste almeno un'etichetta positiva per istanza, puoi scegliere l'etichetta con il DV più alto (sarà comunque negativo). – Dthal
Grazie! L'intuizione e il codice che hai fornito su GitHub hanno davvero aiutato. – malisit