Logistisk Regression
Hejsan! Jag har fastnat på denna.
Naive Bayes är en av de simplare modellerna att implementera, och den grundar sig i en förenklad bild av hur text och en klass hänger samman. Det finns många fler modeller som vi kan träna, och en av dem är logistisk regression.
I följande kodcell ska vi använda oss av modellen LogisticRegression för klassificering av flera klasser. Sätt modellens parametrar så att följande stämmer:
• random_state har ett bestämt värde så att modellens resultat är reproducerbara.• Parametern för maximala antalet iteration ska som minst sättas till 500, så att modellen har tid att närma sig en bra lösning (även om den kan behöva fler steg för att konvergera).• Modellen ska använda sig av saga för optimering.• Valfritt: sätt verbose=True för att få utskrifter om vilken iteration modellen är på.
För att genomföra detta behöver du troligtvis läsa om modellens paramterar i Scikit-learns dokumentation.
Data vektoriseras med CountVectorizer så att resultat går att jämföra med Naive Bayes-modellen. Det finns dock andra vektoriserare, exempelvis en som transformerar till tf-idf, TfidfVectorizer.
Utför träningen på ej balanserad träningsdata. Träning på balanserad data sker i en efterföljande kodcell.
OBS: Det kan ta några minuter för modellen att slutföra sin träning.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
vectorizer = CountVectorizer()
clf = LogisticRegression(
random_state=42,
max_iter=500,
solver='saga',
verbose=True
)
log_regr = Pipeline([('count_vect', vectorizer), ('log_regr', clf)])
log_regr.fit(X, y)
pred_lr = log_regr.predict(X_test)
print("Urval av prediktioner [0-4]:", pred_lr[:5])
Den koden löser jag utan problem men sen när jag ska göra denna:
Ta fram en förväxlingsmatris där klassificeringen från den logistisk regressionen jämförs med de sanna värdena från testdata.
from sklearn.metrics import confusion_matrix
conf_mat = _____
labels = sorted(test_data['party'].unique())
conf_mat_df = pd.DataFrame(conf_mat, index = [i for i in labels],
columns = [i for i in labels])
print("Förväxlingsmatris:")
print(conf_mat_df)
Funkar det inte. Kan någon hjälpa mig?
God afton och välkommen till PA.
Använd funktionen för att infoga programkod. Som det är ju är den snudd på oläslig, vilket är ett särskilt problem i python där indentering har betydelse. Därefter kikar jag gärna på den.
God kväll!
Stort tack :)Blev det bättre nu?
Mycket bättre! Tyvärr är det här utanför mitt kunskapsområde, men det ser ju väldigt spännande ut. Det vore skoj att labba lite med vid tillfälle. Jag gissar att du arbetar med den här uppgiften: https://ai-for-naturligt-sprak.ida.liu.se/content/kapitel_3/slutuppgift
Jag förstår! Precis, det är en uppgiften. Jag löste faktiskt uppgiften själv igår, så det var väldigt kul. Stort tack ändå för att du försökte hjälpa till. Trevlig helg!
Tack detsamma! Lycka till framöver och återkom gärna med fler frågor om du behöver. Även på universitetsnivå finns det ofta någon som kan hjälpa till.