Dies ist eine Erweiterung von meiner vorherigen Frage How to convert a groupby().mean() into a callable object?Wie behandelt man die Score-Methode in Sklearn?
ich für die Hilfe dankbar bin, dass ich aus diesem Forum und Alberto Garcia-Raboso insbesondere erhalten, die meine Frage zu diesem Modell beantwortet.
Während ich fortfahre, treten mehr Fehler auf. Dieser scheint mir schwer zu korrigieren. Es geht um die Leistungsbewertung des Modells. Ich versuchte .score (pred_values, real_values) zu verwenden, aber der Fehler schlägt vor, die Eingangswerte sind nicht in dem [index]:
KeyError: 'None of [[87.333333333333329, 76.0, 81.5, 87.333333333333329, 87.333333333333329, 76.0, 81.5]] are in the [index]'
Ich bin nicht sicher, wie dies zu erklären. Wo ist der Index und wie kann man darauf zugreifen und das Problem beheben?
Ich habe schon lange darüber nachgedacht. Wenn ich es erneut versuche, kann ich das Problem nicht lösen. Ich wäre jeder Hilfe dankbar. Vielen Dank.
Modell
from sklearn.base import BaseEstimator, ClassifierMixin
import pandas as pd
import numpy as np
class MeanClassifier(BaseEstimator, ClassifierMixin):
def __init__(self):
pass
def fit(self, X, y):
self.name = X
self.scores = y
self.data = pd.DataFrame({"name": self.name, "score": self.scores})
#print(self.data)
self.means = self.data.groupby(["name"]).mean()
#print(self.means)
return self
def predict(self, X):
return list(self.means.loc[X, 'score'])
Dateneingaben und Modellversuche
names = ["John", "Mary", "Suzie", "John", "John", "Mary", "Suzie"]
scores = [80, 70, 75, 90, 92, 82, 88]
dd = pd.DataFrame({"name": names, "score": scores})
ddnames = list(dd['name'])
ddscores = list(dd['score'])
B = MeanClassifier()
Bfit = B.fit(ddnames, ddscores)
Bpred = B.predict(dd['name'])
#print(Bpred)
print(B.score(Bpred, ddscores)) #The error appears here
Danke. Das ist in der Tat, was ich brauche. :) – achimneyswallow