{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Bike Sharing Demand | Random Forest","metadata":{}},{"cell_type":"markdown","source":"## 1.问题定义","metadata":{}},{"cell_type":"markdown","source":"训练集包含了各个时段内的租车数目样本，需要我们据此训练一个模型并预测测试集中时段内的租车数目。","metadata":{}},{"cell_type":"markdown","source":"## 2. 数据EDA与预处理","metadata":{}},{"cell_type":"code","source":"#数据整理和分析\nimport pandas as pd\nimport numpy as np\nimport random as rnd\nimport datetime\n#可视化\nimport seaborn as sns\nimport matplotlib. pyplot as plt\n%matplotlib inline\n#机器学习\nfrom sklearn.ensemble import RandomForestRegressor\nfrom sklearn.model_selection import cross_val_score\nfrom sklearn.pipeline import Pipeline\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.metrics import mean_squared_log_error\n","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:24.950763Z","iopub.execute_input":"2022-07-16T10:28:24.951160Z","iopub.status.idle":"2022-07-16T10:28:24.960251Z","shell.execute_reply.started":"2022-07-16T10:28:24.951126Z","shell.execute_reply":"2022-07-16T10:28:24.959302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 2.1 数据集概览","metadata":{}},{"cell_type":"code","source":"train = pd.read_csv ('../input/bike-sharing-demand/train.csv' )\ntest = pd.read_csv ('../input/bike-sharing-demand/test.csv' )","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:24.977650Z","iopub.execute_input":"2022-07-16T10:28:24.978641Z","iopub.status.idle":"2022-07-16T10:28:25.025042Z","shell.execute_reply.started":"2022-07-16T10:28:24.978593Z","shell.execute_reply":"2022-07-16T10:28:25.023602Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(train.columns.values)\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.061589Z","iopub.execute_input":"2022-07-16T10:28:25.061972Z","iopub.status.idle":"2022-07-16T10:28:25.089850Z","shell.execute_reply.started":"2022-07-16T10:28:25.061941Z","shell.execute_reply":"2022-07-16T10:28:25.088615Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.tail()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.091968Z","iopub.execute_input":"2022-07-16T10:28:25.092303Z","iopub.status.idle":"2022-07-16T10:28:25.110974Z","shell.execute_reply.started":"2022-07-16T10:28:25.092272Z","shell.execute_reply":"2022-07-16T10:28:25.109554Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.info()\nprint('_'*40)\ntest.info()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.112567Z","iopub.execute_input":"2022-07-16T10:28:25.112892Z","iopub.status.idle":"2022-07-16T10:28:25.152078Z","shell.execute_reply.started":"2022-07-16T10:28:25.112865Z","shell.execute_reply":"2022-07-16T10:28:25.150861Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"初步发现：\n* 数据集中没有缺失值\n* season,holiday,workingday,weather为分类变量；temp,atemp,humidity,windspeed为数值型变量\n* datetime需要继续分解\n* 测试集中没有registered,casual两个变量","metadata":{}},{"cell_type":"code","source":"train.drop(['casual','registered'],axis=1,inplace=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.170365Z","iopub.execute_input":"2022-07-16T10:28:25.170871Z","iopub.status.idle":"2022-07-16T10:28:25.180601Z","shell.execute_reply.started":"2022-07-16T10:28:25.170826Z","shell.execute_reply":"2022-07-16T10:28:25.178893Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 2.2 日期数据解析","metadata":{}},{"cell_type":"code","source":"train['date_parsed'] = pd.to_datetime(train['datetime'], format=\"%Y-%m-%d %X\")\ntest['date_parsed'] = pd.to_datetime(test['datetime'], format=\"%Y-%m-%d %X\")\ntrain['date_parsed'].head()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.183404Z","iopub.execute_input":"2022-07-16T10:28:25.184555Z","iopub.status.idle":"2022-07-16T10:28:25.299971Z","shell.execute_reply.started":"2022-07-16T10:28:25.184508Z","shell.execute_reply":"2022-07-16T10:28:25.298826Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['hour']= train['date_parsed'].dt.hour\ntrain['month']=train['date_parsed'].dt.month\ntrain['year']=train['date_parsed'].dt.year\n\ntest['hour']= test['date_parsed'].dt.hour\ntest['month']=test['date_parsed'].dt.month\ntest['year']=test['date_parsed'].dt.year\n\ntrain.drop(['datetime','date_parsed'],axis=1,inplace=True)\ntest.drop(['datetime','date_parsed'],axis=1,inplace=True)\n\ntrain.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.301678Z","iopub.execute_input":"2022-07-16T10:28:25.302292Z","iopub.status.idle":"2022-07-16T10:28:25.336787Z","shell.execute_reply.started":"2022-07-16T10:28:25.302250Z","shell.execute_reply":"2022-07-16T10:28:25.335716Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 2.3 数据可视化","metadata":{}},{"cell_type":"code","source":"sns.set_style(\"darkgrid\")#设置绘图主题","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.339359Z","iopub.execute_input":"2022-07-16T10:28:25.339870Z","iopub.status.idle":"2022-07-16T10:28:25.344769Z","shell.execute_reply.started":"2022-07-16T10:28:25.339840Z","shell.execute_reply":"2022-07-16T10:28:25.343613Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### 2.3.1 数值性数据分布情况","metadata":{}},{"cell_type":"code","source":"sns.kdeplot(data=train['temp'],shade=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.346711Z","iopub.execute_input":"2022-07-16T10:28:25.347145Z","iopub.status.idle":"2022-07-16T10:28:25.697439Z","shell.execute_reply.started":"2022-07-16T10:28:25.347102Z","shell.execute_reply":"2022-07-16T10:28:25.696371Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.kdeplot(data=train['atemp'],shade=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:25.698743Z","iopub.execute_input":"2022-07-16T10:28:25.699148Z","iopub.status.idle":"2022-07-16T10:28:26.016633Z","shell.execute_reply.started":"2022-07-16T10:28:25.699114Z","shell.execute_reply":"2022-07-16T10:28:26.015333Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.kdeplot(data=train['humidity'],shade=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:26.018063Z","iopub.execute_input":"2022-07-16T10:28:26.018884Z","iopub.status.idle":"2022-07-16T10:28:26.344041Z","shell.execute_reply.started":"2022-07-16T10:28:26.018840Z","shell.execute_reply":"2022-07-16T10:28:26.343063Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sns.kdeplot(data=train['windspeed'],shade=True)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:26.345720Z","iopub.execute_input":"2022-07-16T10:28:26.346946Z","iopub.status.idle":"2022-07-16T10:28:26.700764Z","shell.execute_reply.started":"2022-07-16T10:28:26.346889Z","shell.execute_reply":"2022-07-16T10:28:26.698971Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### 2.3.2 相关系数&互信息","metadata":{}},{"cell_type":"markdown","source":"##### 相关系数","metadata":{}},{"cell_type":"code","source":"corr=train.iloc[:,0:11].corr()\nmask = np.array(corr)\nmask[np.tril_indices_from(mask)] = False\nfig = plt.figure(figsize =[20,15])\nax = sns.heatmap(data=corr, mask=mask, annot=True, square=True)","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2022-07-16T10:28:26.705891Z","iopub.execute_input":"2022-07-16T10:28:26.706792Z","iopub.status.idle":"2022-07-16T10:28:27.390606Z","shell.execute_reply.started":"2022-07-16T10:28:26.706744Z","shell.execute_reply":"2022-07-16T10:28:27.389658Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"通过相关系数矩阵初步发现temp,atemp与count值正相关性相对较高，humidity与count负相关性相对较高。\n\n但由于相关系数矩阵计算的是线性相关性，并不能完全反应各变量在决定count值时的重要性，故引入互信息(MI)","metadata":{}},{"cell_type":"markdown","source":"##### 互信息（Mutual Information）","metadata":{}},{"cell_type":"code","source":"from sklearn.feature_selection import mutual_info_regression\n\ndef make_mi_scores(X, y, discrete_features):\n    mi_scores = mutual_info_regression(X, y, discrete_features=discrete_features)\n    mi_scores = pd.Series(mi_scores, name=\"MI Scores\", index=X.columns)\n    mi_scores = mi_scores.sort_values(ascending=False)\n    return mi_scores\n\nX = train.copy()\ny = X.pop(\"count\")\ndiscrete_features = X.dtypes == int\n\nmi_scores = make_mi_scores(X, y, discrete_features)\nmi_scores[::3]  # show a few features with their MI scores","metadata":{"scrolled":true,"execution":{"iopub.status.busy":"2022-07-16T10:28:27.391809Z","iopub.execute_input":"2022-07-16T10:28:27.392727Z","iopub.status.idle":"2022-07-16T10:28:28.097701Z","shell.execute_reply.started":"2022-07-16T10:28:27.392690Z","shell.execute_reply":"2022-07-16T10:28:28.096494Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plot_mi_scores(scores):\n    scores = scores.sort_values(ascending=True)\n    width = np.arange(len(scores))\n    ticks = list(scores.index)\n    plt.barh(width, scores)\n    plt.yticks(width, ticks)\n    plt.title(\"Mutual Information Scores\")\n\n\nplt.figure(dpi=100, figsize=(8, 5))\nplot_mi_scores(mi_scores)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:28.099385Z","iopub.execute_input":"2022-07-16T10:28:28.099858Z","iopub.status.idle":"2022-07-16T10:28:28.386960Z","shell.execute_reply.started":"2022-07-16T10:28:28.099813Z","shell.execute_reply":"2022-07-16T10:28:28.386150Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"通过计算MI值发现，除去registered和casual这两个直接决定count的变量外，hour,atemp,temp,humidity,month为最能影响count取值的前5个变量","metadata":{}},{"cell_type":"markdown","source":"#### 2.3.3 不同属性对租车数的影响","metadata":{}},{"cell_type":"markdown","source":"##### count-hour","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='hour',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:28.388014Z","iopub.execute_input":"2022-07-16T10:28:28.388899Z","iopub.status.idle":"2022-07-16T10:28:29.665056Z","shell.execute_reply.started":"2022-07-16T10:28:28.388860Z","shell.execute_reply":"2022-07-16T10:28:29.663921Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"一天中7-9,11-20点租车数较多","metadata":{}},{"cell_type":"markdown","source":"##### count-month","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='month',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:29.666809Z","iopub.execute_input":"2022-07-16T10:28:29.667279Z","iopub.status.idle":"2022-07-16T10:28:30.458909Z","shell.execute_reply.started":"2022-07-16T10:28:29.667212Z","shell.execute_reply":"2022-07-16T10:28:30.457713Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"5-10月租车数相对较多","metadata":{}},{"cell_type":"markdown","source":"##### count-year","metadata":{}},{"cell_type":"code","source":"sns.barplot(x='year',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:30.460049Z","iopub.execute_input":"2022-07-16T10:28:30.460388Z","iopub.status.idle":"2022-07-16T10:28:30.813729Z","shell.execute_reply.started":"2022-07-16T10:28:30.460358Z","shell.execute_reply":"2022-07-16T10:28:30.812310Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"随年份增长租车数增多","metadata":{}},{"cell_type":"markdown","source":"##### count-temp","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x='temp',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:30.815335Z","iopub.execute_input":"2022-07-16T10:28:30.815813Z","iopub.status.idle":"2022-07-16T10:28:32.557023Z","shell.execute_reply.started":"2022-07-16T10:28:30.815763Z","shell.execute_reply":"2022-07-16T10:28:32.555924Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"37摄氏度以前，租车数与实际温度大致正相关","metadata":{}},{"cell_type":"markdown","source":"##### count-atemp","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x='atemp',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:32.559323Z","iopub.execute_input":"2022-07-16T10:28:32.559785Z","iopub.status.idle":"2022-07-16T10:28:34.680794Z","shell.execute_reply.started":"2022-07-16T10:28:32.559740Z","shell.execute_reply":"2022-07-16T10:28:34.679757Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"体感温度在30-40摄氏度之间时的租车数最多 ","metadata":{}},{"cell_type":"markdown","source":"##### count-humidity","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x='humidity',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:34.682081Z","iopub.execute_input":"2022-07-16T10:28:34.682665Z","iopub.status.idle":"2022-07-16T10:28:37.391582Z","shell.execute_reply.started":"2022-07-16T10:28:34.682626Z","shell.execute_reply":"2022-07-16T10:28:37.390783Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"湿度超过15时，租车数与湿度大致呈负相关","metadata":{}},{"cell_type":"markdown","source":"##### count-windspeed","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x='windspeed',y='count',data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:37.393004Z","iopub.execute_input":"2022-07-16T10:28:37.393614Z","iopub.status.idle":"2022-07-16T10:28:38.596002Z","shell.execute_reply.started":"2022-07-16T10:28:37.393580Z","shell.execute_reply":"2022-07-16T10:28:38.595171Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"30之前风速不怎么影响租车数，30-50内风速对应的租车数置信区间过大，说明风速在决定租车数方面并不重要，与MI结果一致","metadata":{}},{"cell_type":"markdown","source":"##### workingday","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x=\"hour\", y=\"count\", hue=\"workingday\", data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:38.597413Z","iopub.execute_input":"2022-07-16T10:28:38.597968Z","iopub.status.idle":"2022-07-16T10:28:40.352098Z","shell.execute_reply.started":"2022-07-16T10:28:38.597935Z","shell.execute_reply":"2022-07-16T10:28:40.350967Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"是否为工作日对于当天的租车高峰期有显著影响\n\n工作日7-9时,17-19时为租车高峰；非工作日10-18时为租车高峰","metadata":{}},{"cell_type":"markdown","source":"##### holiday","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x=\"hour\", y=\"count\", hue=\"holiday\", data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:40.353526Z","iopub.execute_input":"2022-07-16T10:28:40.353868Z","iopub.status.idle":"2022-07-16T10:28:42.101166Z","shell.execute_reply.started":"2022-07-16T10:28:40.353837Z","shell.execute_reply":"2022-07-16T10:28:42.100051Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"是否为节假日对当天租车高峰也有影响，但不如工作日的影响明显","metadata":{}},{"cell_type":"markdown","source":"##### season","metadata":{}},{"cell_type":"code","source":"sns.lineplot(x=\"hour\", y=\"count\", hue=\"season\", data=train)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:42.102669Z","iopub.execute_input":"2022-07-16T10:28:42.103548Z","iopub.status.idle":"2022-07-16T10:28:45.206421Z","shell.execute_reply.started":"2022-07-16T10:28:42.103508Z","shell.execute_reply":"2022-07-16T10:28:45.205211Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"季节并不影响当日租车高峰，但春季租车数明显少于另外3个季节的租车数","metadata":{}},{"cell_type":"markdown","source":"## 3.特征工程","metadata":{}},{"cell_type":"markdown","source":"### 3.1 骑车高峰期\n工作日7-9时,17-19时为租车高峰；非工作日10-18时为租车高峰","metadata":{}},{"cell_type":"code","source":"def is_busy(row):\n    if row['workingday']==1:\n        if ((row['hour']>=7) & (row['hour']<=9))|((row['hour']>=17) & (row['hour']<=19)):\n            return 1\n        else:\n            return 0\n    else:\n        if (row['hour']>=10) & (row['hour']<=18):\n            return 1\n        else:\n            return 0\n\n\ntrain['busy']=train.apply(is_busy,axis='columns')\ntest['busy']=test.apply(is_busy,axis='columns')","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:45.207936Z","iopub.execute_input":"2022-07-16T10:28:45.208329Z","iopub.status.idle":"2022-07-16T10:28:45.818154Z","shell.execute_reply.started":"2022-07-16T10:28:45.208293Z","shell.execute_reply":"2022-07-16T10:28:45.816791Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:45.819926Z","iopub.execute_input":"2022-07-16T10:28:45.820533Z","iopub.status.idle":"2022-07-16T10:28:45.842737Z","shell.execute_reply.started":"2022-07-16T10:28:45.820484Z","shell.execute_reply":"2022-07-16T10:28:45.841544Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### 3.2 舒适气候\n满足以下3个条件时对应时段称为具有舒适气候：\n\n①非春季 ②体感温度在30-40摄氏度之间 ③湿度在20-40之间 ","metadata":{}},{"cell_type":"code","source":"def is_confortable(row):\n    if row['season']!=1:\n        if (row['atemp']>=30) & (row['atemp']<=40):\n            if (row['humidity']>=20) & (row['humidity']<=40):\n                return 1\n            else:\n                return 0\n        else:\n            return 0\n    else:\n        return 0\n\ntrain['confortable']=train.apply(is_confortable,axis='columns')\ntest['confortable']=test.apply(is_confortable,axis='columns')","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:45.847187Z","iopub.execute_input":"2022-07-16T10:28:45.847849Z","iopub.status.idle":"2022-07-16T10:28:46.342604Z","shell.execute_reply.started":"2022-07-16T10:28:45.847811Z","shell.execute_reply":"2022-07-16T10:28:46.341373Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:46.344999Z","iopub.execute_input":"2022-07-16T10:28:46.345375Z","iopub.status.idle":"2022-07-16T10:28:46.364693Z","shell.execute_reply.started":"2022-07-16T10:28:46.345344Z","shell.execute_reply":"2022-07-16T10:28:46.363147Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4.模型构建","metadata":{}},{"cell_type":"markdown","source":"## 4.1 Random Forest","metadata":{}},{"cell_type":"code","source":"# 把count从训练数据中分离出来\ny = train['count']\nX = train.drop(['count'], axis=1)\n\n# 分成训练与测试集\nX_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2,\n                                                                random_state=0)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:46.366405Z","iopub.execute_input":"2022-07-16T10:28:46.367026Z","iopub.status.idle":"2022-07-16T10:28:46.385207Z","shell.execute_reply.started":"2022-07-16T10:28:46.366976Z","shell.execute_reply":"2022-07-16T10:28:46.384087Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"my_model = RandomForestRegressor()\nmy_model.fit(X_train,y_train)\ny_pred=my_model.predict(X_valid)\n\nprint(\"RMSLE: \" + str(mean_squared_log_error(y_valid,y_pred,squared=False)))","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:46.387581Z","iopub.execute_input":"2022-07-16T10:28:46.388455Z","iopub.status.idle":"2022-07-16T10:28:49.415308Z","shell.execute_reply.started":"2022-07-16T10:28:46.388403Z","shell.execute_reply":"2022-07-16T10:28:49.414112Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## 4.2 输出结果","metadata":{}},{"cell_type":"code","source":"my_model = RandomForestRegressor()\nmy_model.fit(X,y)\npred=my_model.predict(test)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:28:49.417028Z","iopub.execute_input":"2022-07-16T10:28:49.417782Z","iopub.status.idle":"2022-07-16T10:28:53.047013Z","shell.execute_reply.started":"2022-07-16T10:28:49.417736Z","shell.execute_reply":"2022-07-16T10:28:53.045774Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test2 = pd.read_csv ('../input/bike-sharing-demand/test.csv' )\nd={'datetime':test2['datetime'],'count':pred}\nans=pd.DataFrame(d)\nans.to_csv('./answer',index=False)","metadata":{"execution":{"iopub.status.busy":"2022-07-16T10:30:31.371968Z","iopub.execute_input":"2022-07-16T10:30:31.372775Z","iopub.status.idle":"2022-07-16T10:30:31.414757Z","shell.execute_reply.started":"2022-07-16T10:30:31.372720Z","shell.execute_reply":"2022-07-16T10:30:31.413711Z"},"trusted":true},"execution_count":null,"outputs":[]}]}