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}')