利用python分析Kaggle中的数据集Holiday_Package_Prediction,写一份旅游套餐报告并写出代码
时间: 2024-02-29 21:51:38 浏览: 172
好的,我将为您介绍如何使用Python分析Kaggle中的Holiday_Package_Prediction数据集并生成一份旅游套餐报告。
首先,我们需要导入必要的库和数据集。我们将使用pandas库来读取和处理数据,matplotlib库来生成图表,sklearn库来进行数据预处理和建模。
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
df = pd.read_csv('Holiday_Package.csv')
```
接下来,我们可以查看数据集的前几行以及数据集的基本信息。
```python
df.head()
df.info()
```
数据集共有8个特征和1个目标变量,共计7,200个样本。其中,‘Package Type’和‘Destination’是分类变量,需要进行编码处理。
```python
encoder = LabelEncoder()
df['Package Type'] = encoder.fit_transform(df['Package Type'])
df['Destination'] = encoder.fit_transform(df['Destination'])
```
接下来,我们可以使用describe()函数来查看数据集中数值型特征的统计信息。
```python
df.describe()
```
根据统计信息,我们可以发现数据集中有一些异常值,例如‘Duration’特征的最大值为4881天,显然是不合理的。因此,我们可以通过绘制箱线图来查看数据集中的异常值。
```python
plt.boxplot(df['Duration'])
plt.show()
```
我们可以看到,存在一些异常值,需要进行处理。我们可以使用IQR方法来删除‘Duration’特征中的异常值。
```python
Q1 = df['Duration'].quantile(0.25)
Q3 = df['Duration'].quantile(0.75)
IQR = Q3 - Q1
df = df[~((df['Duration'] < (Q1 - 1.5 * IQR)) | (df['Duration'] > (Q3 + 1.5 * IQR)))]
```
接下来,我们可以绘制特征之间的散点图和相关系数矩阵来查看特征之间的相关性。
```python
plt.scatter(df['Duration'], df['Cost'])
plt.xlabel('Duration')
plt.ylabel('Cost')
plt.show()
corr_matrix = df.corr()
plt.matshow(corr_matrix)
plt.show()
```
我们可以看到‘Duration’和‘Cost’之间存在一定的正相关性,‘Package Type’和‘Destination’之间存在一定的负相关性。
最后,我们可以使用随机森林模型来预测旅游套餐的购买情况,并计算模型的准确率。
```python
X = df.drop('Buy', axis=1)
y = df['Buy']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
rf_model = RandomForestClassifier(n_estimators=100, max_depth=10)
rf_model.fit(X_train, y_train)
y_pred = rf_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Accuracy:', accuracy)
```
通过运行上面的代码,我们可以得到模型的准确率。
综上,我们通过Python分析Kaggle中的Holiday_Package_Prediction数据集,并生成了一份旅游套餐报告。
阅读全文