For some reason, my neural network doesn’t want to show more than 1000. Here’s the code:
import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.metrics import mean_squared_error
# Загрузка данных для обучения
train_data = pd.read_csv("_salary_train.csv")
# Преобразование категориальных переменных в числовые значения
train_data = pd.get_dummies(train_data, columns=['job'])
# Удаление столбца "Id"
train_data.drop(columns=['Id'], inplace=True)
# Масштабирование признаков
scaler = StandardScaler()
X = train_data.drop(columns=['salary'])
y = train_data['salary']
X_scaled = scaler.fit_transform(X)
# Создание и обучение модели
model = Sequential([
Dense(64, activation='relu', input_shape=(X_scaled.shape[1],)),
Dense(32, activation='relu'),
Dense(1)
])
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(X_scaled, y, epochs=1000, batch_size=32)
# Загрузка данных для предсказания
test_data = pd.read_csv("salary_predict.csv")
# Преобразование категориальных переменных в числовые значения
test_data = pd.get_dummies(test_data, columns=['job'])
# Удаление столбца "Id", если он присутствует
if 'Id' in test_data.columns:
test_data.drop(columns=['Id'], inplace=True)
# Удаление столбца "salary", если он присутствует
if 'salary' in test_data.columns:
test_data.drop(columns=['salary'], inplace=True)
# Упорядочивание признаков для тестовых данных
test_data = test_data.reindex(columns=X.columns, fill_value=0)
# Масштабирование признаков
test_data_scaled = scaler.transform(test_data)
# Предсказания заработной платы
predictions = model.predict(test_data_scaled)
# Создание DataFrame с Id и предсказанными зарплатами
result_df = pd.DataFrame({'Id': range(1, len(predictions) + 1), 'salary': predictions.flatten()})
# Ограничение значений зарплат в пределах от 1 до 1 000 000
result_df['salary'] = result_df['salary'].clip(1, 1000000)
# Сохранение предсказаний в CSV файл
result_df.to_csv('predicted_salaries_2000.csv', index=False)
There was 18,000 meaning in education. Then he drove under 999, but only 1000 is displayed. Why so?
Вот часть значении для обучения:
enter image description hereenter image description here
New contributor
sultan osmanov is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.