Särdragstransformationer
Du diskuterar kreditdatasetet med bankchefen. Hon menar att de säkraste låneansökningarna tenderar att gälla medelhöga kreditbelopp – värden som är antingen för låga eller för höga signalerar hög risk. Det kan alltså finnas ett icke-linjärt samband mellan den här variabeln och klassen. Du vill testa den hypotesen. Först konstruerar du en icke-linjär transformation av särdragen. Sedan utvärderar du vilken av de två variablerna som bäst förutsäger klassen, med hjälp av SelectKBest() och måttet chi2(), som båda har förinslästs.
Data finns tillgänglig som en pandas DataFrame kallad credit, där klassen finns i kolumnen class. Du har även pandas förinsläst som pd och numpy som np.
Den här övningen är en del av kursen
Att designa maskininlärningsflöden i Python
Övningsinstruktioner
- Definiera en funktion som transformerar en numerisk vektor genom att beräkna det absoluta avståndet för varje värde från vektorns medelvärde.
- Använd den här transformationen på kolumnen
credit_amounti datasetet och lagra resultatet i en ny kolumn kalladdiff. - Skapa ett
SelectKBest()-särdragsväljare som väljer en av de två kolumnerna,credit_amountochdiff, med hjälp av måttetchi2(). - Inspektera resultaten.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Function computing absolute difference from column mean
def abs_diff(x):
return ____(x-____)
# Apply it to the credit amount and store to new column
credit['diff'] = ____
# Create a feature selector with chi2 that picks one feature
sk = ____(chi2, ____)
# Use the selector to pick between credit_amount and diff
sk.fit(____, credit['class'])
# Inspect the results
sk.____()