Я работаю над реализацией и сравнением различных алгоритмов машинного обучения на Python с помощью scikit-learn. Я опробовал несколько моделей, включая линейную регрессию, логистическую регрессию, множественную линейную регрессию, полиномиальную регрессию, K-NN и дерево решений.
Я хочу знать:
• Правильны ли эти реализации?
• Есть ли какие-либо улучшения или лучшие практики, которым мне следует следовать?
• Справлюсь ли я правильную предварительную обработку (например, пропущенные значения и кодирование)?
• Как мне лучше сравнить эти модели?
Любые предложения или исправления будут очень признательны.
Ниже приведены мои реализации:
linear regression.
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
data = pd.read_csv("data.csv")
X = data[['x']]
y = data['y']
X = np.array(X).reshape(-1, 1)
y = np.array(y)
model = LinearRegression()
model.fit(X, y)
slope = model.coef_[0]
intercept = model.intercept_
print("Slope:", slope)
print("Intercept:", intercept)
y_pred = model.predict(X)
print(y_pred)
logistic regression
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
data = pd.read_csv("train.csv")
X = data[['Pclass', 'Sex', 'Age', 'Fare']]
y = data['Survived']
X['Sex'] = X['Sex'].map({'male': 0, 'female': 1})
X['Age'] = X['Age'].fillna(X['Age'].median())
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
Multiple Linear Regression
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
data = pd.read_csv("data.csv")
X = data[['Hours', 'Sleep', 'Practice']]
y = data['Score']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
Polynomial Regression
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
data = pd.read_csv("data.csv")
X = data[['Hours']]
y = data['Score']
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X)
X_train, X_test, y_train, y_test = train_test_split(
X_poly, y, test_size=0.2, random_state=42
)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
K-NN
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
data = pd.read_csv("train.csv")
X = data[['Pclass', 'Age', 'Fare']]
y = data['Survived']
X['Age'] = X['Age'].fillna(X['Age'].median())
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
decision tree
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
data = pd.read_csv("data.csv")
X = data.drop("y", axis=1)
y = data["y"]
X = np.array(X)
y = np.array(y)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print(y_pred)
print("Accuracy:", model.score(X_test, y_test))
metrix
from sklearn.metrics import mean_squared_error, r2_score
print("MSE:", mean_squared_error(y_test, y_pred))
print("R2 Score:", r2_score(y_test, y_pred))