import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt from sklearn.metrics import mean_squared_error from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler, OrdinalEncoder from sklearn.model_selection import GridSearchCV from sklearn.ensemble import RandomForestRegressor data = pd.read_csv('bitcoinweek.csv') data = data[::-1] data.head(7) corr = data.corr(numeric_only=True) corr.round(2) plt.figure(figsize=(10,8)) _ = sns.heatmap(corr.round(2), cmap="Greens", cbar=True, annot=True, square=True) data['Volume'] = data['Volume'].str.replace(',', '').astype(float) data['Market Cap'] = data['Market Cap'].str.replace(',', '').astype(float) data['Date'] = data['Date'].astype('datetime64[ns]') data['Date'] = data['Date'].apply(lambda x: x.timestamp()) # Açılış değeri sütununu ekliyoruz data['Open'] = data['Open'].str.replace(',', '').astype(float) X = data.drop(['Market Cap', 'Opening Price'], axis=1) y = data['Market Cap'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) numerical_cols = list(data.select_dtypes(include=['int64', 'float64']).columns) numerical_cols.remove('Market Cap') data["Market Cap"].dtype scaler = MinMaxScaler() X_train[numerical_cols] = scaler.fit_transform(X_train[numerical_cols]) X_test[numerical_cols] = scaler.transform(X_test[numerical_cols]) param_grid = { 'n_estimators': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 50, 100, 200, 300] } model = RandomForestRegressor(random_state=42) grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='neg_mean_squared_error', n_jobs=-1) grid_search.fit(X, y) best_n_estimators = grid_search.best_params_['n_estimators'] print(f'En iyi n_estimators değeri: {best_n_estimators}') model = RandomForestRegressor(n_estimators=5, random_state=42) model.fit(X_train, y_train) y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) print(f'Mean Squared Error: {mse}')