Я работаю над задачей машинного обучения, где мне даны:
• Набор обучающих данных (с метками)
• Тестовый набор данных (без меток)
Цель:
1. Выполнение базовой предварительной обработки (обработка пропущенных значений, кодирование категориальных признаков)
2. Обучите простую модель (например, логистическую регрессию, дерево решений, случайный лес)
3. Выберите лучшую модель на основе точности проверки
4. Создание прогнозов для тестового набора данных
Я создал функцию многократного использования, которая выполняет все эти шаги. Я хотел бы знать:
• Является ли этот подход правильным и надежным для общих наборов табличных данных?
• Есть ли какие-либо улучшения или лучшие практики, которым мне следует следовать?
def train_model(train_df,test_df):
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder
from sklearn.impute import SimpleImputer
df = train_df.copy()
test = test_df.copy()
y = df['Survived']
X = df.drop('Survived',axis=1)
#drop_cols = [col for col in X.columns if "id" in col.lower()]
#X = X.drop(drop_cols, axis=1, errors='ignore')
num_cols = X.select_dtypes(include = np.number).columns
cat_cols = X.select_dtypes(include = 'object').columns
num_imputer = SimpleImputer(strategy='mean')
X[num_cols] = num_imputer.fit_transform(X[num_cols])
test[num_cols] = num_imputer.transform(test[num_cols])
cat_imputer = SimpleImputer(strategy='most_frequent')
X[cat_cols] = cat_imputer.fit_transform(X[cat_cols])
test[cat_cols] = cat_imputer.transform(test[cat_cols])
for col in cat_cols:
le = LabelEncoder()
X[col] = le.fit_transform(X[col])
test[col] = le.transform(test[col])
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)
models = [
LogisticRegression(max_iter=1000, random_state=42),
RandomForestClassifier(n_estimators=100, random_state=42),
DecisionTreeClassifier(random_state=42)
]
best_model = None
best_score = 0
for m in models:
m.fit(X_train,y_train)
pred = m.predict(X_test)
accscore = accuracy_score(y_test,pred)
print(f"{m.__class__.__name__} Accuracy: {accscore:.4f}")
if accscore > best_score:
best_score = accscore
best_model = m
print(f"Best Model: {best_model.__class__.__name__}")
best_model.fit(X,y)
test_pred = best_model.predict(test)
return test_pred
import pandas as pd
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
train_df.shape
train_df.head()
train_df.columns
train_df.describe()
train_df.isnull().sum()
test_df.describe()
test_df.shape
test_df.isnull().sum()
train_df=train_df.drop(columns=["Cabin","PassengerId","Name","Ticket"])
test_df=test_df.drop(columns=["Cabin","PassengerId","Name","Ticket"])
train_df.isnull().sum()
test_pred = train_model(train_df, test_df)
test_df = pd.read_csv('test.csv')
submission = pd.DataFrame({
"PassengerId": test_df["PassengerId"],
"Survived": test_pred
})
submission.to_csv("submission.csv", index=False)
Многоразовый конвейер scikit-learn для набора табличных данных ⇐ Python
Программы на Python
-
Anonymous
1774600947
Anonymous
Я работаю над задачей машинного обучения, где мне даны:
• Набор обучающих данных (с метками)
• Тестовый набор данных (без меток)
Цель:
1. Выполнение базовой предварительной обработки (обработка пропущенных значений, кодирование категориальных признаков)
2. Обучите простую модель (например, логистическую регрессию, дерево решений, случайный лес)
3. Выберите лучшую модель на основе точности проверки
4. Создание прогнозов для тестового набора данных
Я создал функцию многократного использования, которая выполняет все эти шаги. Я хотел бы знать:
• Является ли этот подход правильным и надежным для общих наборов табличных данных?
• Есть ли какие-либо улучшения или лучшие практики, которым мне следует следовать?
def train_model(train_df,test_df):
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
from sklearn.preprocessing import LabelEncoder
from sklearn.impute import SimpleImputer
df = train_df.copy()
test = test_df.copy()
y = df['Survived']
X = df.drop('Survived',axis=1)
#drop_cols = [col for col in X.columns if "id" in col.lower()]
#X = X.drop(drop_cols, axis=1, errors='ignore')
num_cols = X.select_dtypes(include = np.number).columns
cat_cols = X.select_dtypes(include = 'object').columns
num_imputer = SimpleImputer(strategy='mean')
X[num_cols] = num_imputer.fit_transform(X[num_cols])
test[num_cols] = num_imputer.transform(test[num_cols])
cat_imputer = SimpleImputer(strategy='most_frequent')
X[cat_cols] = cat_imputer.fit_transform(X[cat_cols])
test[cat_cols] = cat_imputer.transform(test[cat_cols])
for col in cat_cols:
le = LabelEncoder()
X[col] = le.fit_transform(X[col])
test[col] = le.transform(test[col])
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2,random_state=42)
models = [
LogisticRegression(max_iter=1000, random_state=42),
RandomForestClassifier(n_estimators=100, random_state=42),
DecisionTreeClassifier(random_state=42)
]
best_model = None
best_score = 0
for m in models:
m.fit(X_train,y_train)
pred = m.predict(X_test)
accscore = accuracy_score(y_test,pred)
print(f"{m.__class__.__name__} Accuracy: {accscore:.4f}")
if accscore > best_score:
best_score = accscore
best_model = m
print(f"Best Model: {best_model.__class__.__name__}")
best_model.fit(X,y)
test_pred = best_model.predict(test)
return test_pred
import pandas as pd
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
train_df.shape
train_df.head()
train_df.columns
train_df.describe()
train_df.isnull().sum()
test_df.describe()
test_df.shape
test_df.isnull().sum()
train_df=train_df.drop(columns=["Cabin","PassengerId","Name","Ticket"])
test_df=test_df.drop(columns=["Cabin","PassengerId","Name","Ticket"])
train_df.isnull().sum()
test_pred = train_model(train_df, test_df)
test_df = pd.read_csv('test.csv')
submission = pd.DataFrame({
"PassengerId": test_df["PassengerId"],
"Survived": test_pred
})
submission.to_csv("submission.csv", index=False)
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия