不同算法预测客户购买股票意图

一.决策树算法

根据以代码,可以得到预测客户购买股票意图的决策树模型,并进行可视化分析,可以分析出最重要的特征和决策过程,以便进行进一步的分析和预测。

1.导入项目运行所需要的包

1.import pandas as pd
2.from sklearn.tree import DecisionTreeClassifier
3.import matplotlib.pyplot as plt
4.from sklearn.tree import plot_tree
5.from sklearn.model_selection import train_test_split
6.from sklearn.preprocessing import LabelEncoder
7.from sklearn.ensemble import RandomForestClassifier
8.from sklearn.svm import SVC
9.from sklearn.metrics import accuracy_score, precision_score, recall_score

2.读取数据文件

1. df =  pd.read_excel('C:/Users/DELL/Desktop/数据集 (1)/股票购买数据集.xlsx')

3.数据预处理

使用LabelEncoder对数据进行标签编码的代码片段,目的是将分类变量转换为数字格式,以便于使用机器学习算法进行训练和预测。首先,将job、marital、education、bankrupt、mortgage、loan、contact、month、poutcome这些分类变量分别进行标签编码。LabelEncoder() 是sklearn中的一个函数,可以将每个变量的不同值映射为整数。

接着,通过dropna函数,删除数据中包含缺失值的行。然后将X和y分别定义为DataFrame中除最后一列外的所有列和最后一列。y列是我们想要预测的变量,将其用le.fit_transform(y)编码为数字。最终,X和y将用于训练一个分类模型。

1.le = LabelEncoder()
2.df['job'] = le.fit_transform(df['job'])
3.df['marital'] = le.fit_transform(df['marital'])
4.df['education'] = le.fit_transform(df['education'])
5.df['bankrupt'] = le.fit_transform(df['bankrupt'])
6.df['mortgage'] = le.fit_transform(df['mortgage'])
7.df['loan'] = le.fit_transform(df['loan'])
8.df['contact'] = le.fit_transform(df['contact'])
9.df['month'] = le.fit_transform(df['month'])
10.df['poutcome'] = le.fit_transform(df['poutcome'])
11.df['purchased'] = le.fit_transform(df['purchased'])
12.df.dropna(inplace=True)
13.X = df.iloc[:, :-1]
14.y = df.iloc[:, -1]
15.le = LabelEncoder()
16.y = le.fit_transform(y)

4.数据划分训练集和测试集

将数据集X和y分别拆分成X_train,X_test,y_train和y_test四个数据集,其中测试集的比例为20%(test_size=0.2),随机种子为42(random_state=42)。最终,X_train和y_train将用于训练模型,而X_test和y_test将用于评估模型的性能。

1.X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42

5.训练和测试决策树模型

首先,将DecisionTreeClassifier类实例化一个分类器clf_dt,传递参数random_state=42,以便于结果具有可重复性。然后使用训练数据集进行模型拟合 clf_dt.fit(X_train,y_train)。接着,使用测试数据集X_test进行预测y_pred_dt,将预测结果保存在y_pred_dt中。最后,使用accuracy_score函数来计算分类器在测试集上的准确率acc_dt,将其打印输出,以检查模型的性能表现。

1.clf_dt = DecisionTreeClassifier(random_state=42)
2.clf_dt.fit(X_train, y_train)
3.y_pred_dt = clf_dt.predict(X_test)
4.acc_dt = accuracy_score(y_test, y_pred_dt)
5.print("Decision Tree Classifier Accuracy:", acc_dt)

6.可视化结果

首先使用matplotlib设置一个图形画布大小为(30,15),以适配决策树的展示。然后调用plot_tree函数,传递参数clf_dt、feature_names和class_names,其中clf_dt是上一步中训练得到的决策树分类器,feature_names是数据集特征名称列表,class_names是数据集标签名称列表。plot_tree函数会将决策树模型可视化输出,其中每个节点代表一个决策或者一个特征分裂点,用不同颜色表示不同的类别,以及给出一些重要的统计信息,如样本数、熵等。最后通过plt.show()函数将可视化结果展示在画布中。

1.plt.figure(figsize=(30,15))
2.plot_tree(clf_dt, filled=True, feature_names=X.columns, class_names=["No", "Yes"])
3.plt.show()

 

二.随机森林算法

前四个步骤与决策树算法实现过程前四个步骤一样,在这里就不做过多的解释了。

1.导入项目运行所需要的包

1.import pandas as pd
2.from sklearn.tree import DecisionTreeClassifier
3.import matplotlib.pyplot as plt
4.from sklearn.tree import plot_tree
5.from sklearn.model_selection import train_test_split
6.from sklearn.preprocessing import LabelEncoder
7.from sklearn.ensemble import RandomForestClassifier
8.from sklearn.svm import SVC
9.from sklearn.metrics import accuracy_score, precision_score, recall_score

2.读取数据文件

1.df =  pd.read_excel('C:/Users/DELL/Desktop/数据集 (1)/股票购买数据集.xlsx')

3.数据预处理

1.le = LabelEncoder()
2.df['job'] = le.fit_transform(df['job'])
3.df['marital'] = le.fit_transform(df['marital'])
4.df['education'] = le.fit_transform(df['education'])
5.df['bankrupt'] = le.fit_transform(df['bankrupt'])
6.df['mortgage'] = le.fit_transform(df['mortgage'])
7.df['loan'] = le.fit_transform(df['loan'])
8.df['contact'] = le.fit_transform(df['contact'])
9.df['month'] = le.fit_transform(df['month'])
10.df['poutcome'] = le.fit_transform(df['poutcome'])
11.df['purchased'] = le.fit_transform(df['purchased'])
12.df.dropna(inplace=True)
13.X = df.iloc[:, :-1]
14.y = df.iloc[:, -1]
15.le = LabelEncoder()
16.y = le.fit_transform(y)

4.数据划分训练集和测试集

1.X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42

5.训练和测试随机森林模型

1.rf = RandomForestClassifier(n_estimators=100, random_state=42)
2.rf.fit(X_train, y_train)
3.y_rf_pred = rf.predict(X_test)

6.可视化其中的一棵树

首先使用matplotlib设置一个图形画布大小为(30,15),以适配决策树的展示。然后调用plot_tree函数,传递参数rf.estimators_[0]、feature_names和class_names。其中rf.estimators_[0]是随机森林中的第一个决策树,feature_names是数据集特征名称列表,class_names是数据集标签名称列表。

1.plt.figure(figsize=(30,15))
2.plot_tree(rf.estimators_[0], filled=True, feature_names=X.columns, class_names=["No", "Yes"])
3.plt.show()

7.模型评估

使用了三个评价指标来对随机森林模型的性能进行评估,这些指标为准确率(accuracy)、精准率(precision)和召回率(recall)。其中,accuracy_score()函数用于计算模型在测试集上的准确率,precision_score()函数用于计算模型在测试集上的精准率,而recall_score()函数用于计算模型在测试集上的召回率。

1.print("Random Forest: Accuracy: {:.3f}, Precision: {:.3f}, Recall: {:.3f}"
2.     .format(accuracy_score(y_test, y_rf_pred), precision_score(y_test, y_rf_pred), recall_score(y_test, y_rf_pred)))

三.svm算法

前五个步骤与决策树算法实现过程前五个步骤一样,在这里就不做过多的解释了。

1.导入项目运行所需要的包

3.import pandas as pd
4.from sklearn.tree import DecisionTreeClassifier
5.import matplotlib.pyplot as plt
6.from sklearn.tree import plot_tree
7.from sklearn.model_selection import train_test_split
8.from sklearn.preprocessing import LabelEncoder
9.from sklearn.ensemble import RandomForestClassifier
10.from sklearn.svm import SVC
11.from sklearn.metrics import accuracy_score, precision_score, recall_score

2.读取数据文件

1.df =  pd.read_excel('C:/Users/DELL/Desktop/数据集 (1)/股票购买数据集.xlsx')

3.数据预处理

1.le = LabelEncoder()
2.df['job'] = le.fit_transform(df['job'])
3.df['marital'] = le.fit_transform(df['marital'])
4.df['education'] = le.fit_transform(df['education'])
5.df['bankrupt'] = le.fit_transform(df['bankrupt'])
6.df['mortgage'] = le.fit_transform(df['mortgage'])
7.df['loan'] = le.fit_transform(df['loan'])
8.df['contact'] = le.fit_transform(df['contact'])
9.df['month'] = le.fit_transform(df['month'])
10.df['poutcome'] = le.fit_transform(df['poutcome'])
11.df['purchased'] = le.fit_transform(df['purchased'])
12.df.dropna(inplace=True)
13.X = df.iloc[:, :-1]
14.y = df.iloc[:, -1]
15.le = LabelEncoder()
16.y = le.fit_transform(y)

4.数据划分训练集和测试集

1.X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42

5.训练和测试模型

首先,使用SVC(kernel=‘linear’, random_state=42)实例化一个SVM分类器,其中kernel='linear’表示采用线性核函数进行分类,random_state=42表示设置随机种子,使结果具有可重复性。然后,使用训练数据集进行SVM模型的拟合:svm.fit(X_train, y_train)。接下来,使用测试数据集进行预测,并将预测结果保存在变量y_svm_pred中:y_svm_pred = svm.predict(X_test)。最后,使用print()函数输出变量y_svm_pred,查看预测结果。

1.svm = SVC(kernel='linear', random_state=42)
2.svm.fit(X_train, y_train)
3.y_svm_pred = svm.predict(X_test)
4.print(y_svm_pred)

6.模型评估

使用了三个评价指标来对SVM模型的性能进行评估,这些指标为准确率(accuracy)、精准率(precision)和召回率(recall)。其中,accuracy_score()函数用于计算模型在测试集上的准确率,precision_score()函数用于计算模型在测试集上的精准率,而recall_score()函数用于计算模型在测试集上的召回率。

1.print("SVM: Accuracy: {:.3f}, Precision: {:.3f}, Recall: {:.3f}"
2.     .format(accuracy_score(y_test, y_svm_pred), precision_score(y_test, y_svm_pred), recall_score(y_test, y_svm_pred)))

四.对比不同预测算法模型

决策树算法是一种基于树结构的分类器,其建立的是一棵树,每个结点代表一个属性,每个分支代表一个可能的取值,而每个叶子结点代表一个分类(或回归)结果。决策树算法适用于小数据集、易于解释、可视化和处理缺失值。

随机森林算法是一种基于多个决策树的分类器,它通过集成多个决策树来提高模型的预测准确率和鲁棒性。随机森林算法通过随机选择训练数据和特征,来训练多棵决策树,并通过集成这些决策树的预测结果,来得到最终的分类(或回归)结果。随机森林算法适合处理高维数据、数据质量较差,以及需要快速建模和准确预测的场景。

SVM算法基于数据点之间的边界(或叫决策边界)来分离类别。SVM算法最小化向量间距离来寻找最优边界,同时也有一些技巧来处理非线性问题,例如核函数。SVM适用于确信决策边界对预测结果影响显著,以及需要具有较高准确度、较少参数和容错率的场景。

总之,决策树算法适用于小数据集、易于解释;随机森林算法适用于高维数据、数据质量较差、快速建模和准确预测的场景;而SVM算法适用于确信决策边界对预测结果影响显著、准确度较高、参数较少和容错率高的场景。

根据预测结果的准确度可以比较出,随机森林模型的预测准确率最高为0.955,svm模型的预测准确率次之为0.946,预测准确率最低的是决策树模型为0.940。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值