Grundläggande koncept och bibliotek

Machine Learning (ML) är en gren inom AI där vi lär datorer att “lära sig” från data istället för att manuellt programmera allt. Här går vi igenom grunderna och använder populära Python-bibliotek som Scikit-learn, Pandas och Matplotlib för att bygga en enkel ML-modell.
Vad är Machine Learning?
Machine Learning handlar om att använda algoritmer för att upptäcka mönster i data. Det finns tre huvudtyper av ML:
- Supervised Learning: Modellen tränas på data med kända resultat.
- Unsupervised Learning: Modellen identifierar mönster i ostrukturerad data.
- Reinforcement Learning: Modellen lär sig genom att interagera med en miljö.
Steg 1: Ladda och förstå data
Vi använder det välkända Iris Dataset som innehåller data om olika blommor och deras klassifikation.
from sklearn.datasets import load_irisimport pandas as pd# Load the Iris datasetiris = load_iris()# Create a DataFrame for easier data manipulationdf = pd.DataFrame(data=iris.data, columns=iris.feature_names)df['species'] = iris.targetprint(df.head())Code language: PHP (php) Output:
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) species
0 5.1 3.5 1.4 0.2 0
1 4.9 3.0 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5.0 3.6 1.4 0.2 0
Steg 2: Dela upp data
För att träna och testa modellen delar vi upp data i träningsdata och testdata.
from sklearn.model_selection import train_test_split# Features (X) and target (y)X = df.iloc[:, :-1] # All columns except the last oney = df['species'] # The target column# Split data into training and testing setsX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)print(f"Training samples: {len(X_train)}")print(f"Testing samples: {len(X_test)}")Code language: PHP (php) Output:
Training samples: 105
Testing samples: 45
Steg 3: Träna en modell
Vi använder en Logistic Regression-modell för klassifikation.
from sklearn.linear_model import LogisticRegression# Create and train the modelmodel = LogisticRegression(max_iter=200)model.fit(X_train, y_train)# Check the training accuracytrain_accuracy = model.score(X_train, y_train)print(f"Training accuracy: {train_accuracy:.2f}")Code language: PHP (php) Output:
Training accuracy: 0.95
Steg 4: Testa modellen
Nu använder vi testdata för att utvärdera modellens prestanda.
from sklearn.metrics import accuracy_score, classification_report# Make predictionsy_pred = model.predict(X_test)# Evaluate the modeltest_accuracy = accuracy_score(y_test, y_pred)print(f"Test accuracy: {test_accuracy:.2f}")# Detailed classification reportprint(classification_report(y_test, y_pred, target_names=iris.target_names))Code language: PHP (php) Output:
Test accuracy: 0.97
precision recall f1-score support
setosa 1.00 1.00 1.00 16
versicolor 0.94 1.00 0.97 15
virginica 1.00 0.94 0.97 14
accuracy 0.97 45
macro avg 0.98 0.98 0.98 45
weighted avg 0.98 0.98 0.98 45
Steg 5: Visualisera resultaten
Visualisering är viktigt för att förstå data och modellens beteende.
import matplotlib.pyplot as pltimport numpy as np# Create a scatter plot of the first two featuresplt.figure(figsize=(8, 6))for i, label in enumerate(iris.target_names): plt.scatter(X_test.to_numpy()[y_test == i, 0], X_test.to_numpy()[y_test == i, 1], label=label)plt.xlabel("Sepal Length (cm)")plt.ylabel("Sepal Width (cm)")plt.title("Iris Dataset Classification")plt.legend()plt.show()Code language: PHP (php) Sammanfattande kod: Bygga och utvärdera modellen
Här kombinerar vi alla steg till en sammanhängande kodsnutt.
from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom sklearn.linear_model import LogisticRegressionfrom sklearn.metrics import accuracy_score, classification_reportimport pandas as pdimport matplotlib.pyplot as plt# Load and prepare the datairis = load_iris()df = pd.DataFrame(data=iris.data, columns=iris.feature_names)df['species'] = iris.targetX = df.iloc[:, :-1]y = df['species']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# Train the modelmodel = LogisticRegression(max_iter=200)model.fit(X_train, y_train)# Evaluate the modely_pred = model.predict(X_test)print(f"Test accuracy: {accuracy_score(y_test, y_pred):.2f}")print(classification_report(y_test, y_pred, target_names=iris.target_names))# Visualize the resultsplt.figure(figsize=(8, 6))for i, label in enumerate(iris.target_names): plt.scatter(X_test.to_numpy()[y_test == i, 0], X_test.to_numpy()[y_test == i, 1], label=label)plt.xlabel("Sepal Length (cm)")plt.ylabel("Sepal Width (cm)")plt.title("Iris Dataset Classification")plt.legend()plt.show()Code language: PHP (php) Tips och vanliga fallgropar
Tips
- Använd
train_test_splitför att alltid testa din modell på nya data. - Börja med enklare modeller som Logistic Regression innan du går vidare till mer komplexa.
- Använd visualiseringar för att förstå datan och modellens prestanda.
Vanliga fallgropar
- Överträning: Om modellen presterar bra på träningsdata men dåligt på testdata, har den övertränats.
- Felaktig datahantering: Kontrollera alltid att datan är korrekt skalad och utan saknade värden.
- Felförståelse av metrik: En hög accuracy kan vara missvisande om datan är obalanserad.
Sammanfattning
Machine Learning är ett kraftfullt verktyg som låter oss hitta mönster och fatta datadrivna beslut. Med Python och bibliotek som Scikit-learn kan du snabbt bygga modeller och experimentera med data. Börja smått, testa olika modeller och fortsätt fördjupa dig!

