用决策树编写一个训练集

可以看看这两个问题:怎么降低精确度和别的编写出特征的方法吗?




```import pandas

from sklearn.tree import DecisionTreeClassifier

from sklearn.model_selection import train_test_split

td=pandas.read_csv(r'C:\Users\Hana\Desktop\TaxDetection.csv',encoding='utf-8')
td.info()

features=['营业场所面积','登记天数','注册资金(万元)','专职人员总数','中级以上职称人员总数','参加财税培训人员总数','业绩合同数量','异地评审场所个数','异地营业场所面积(平方米)','经度','纬度','纳税不遵从记录']
x=td[features]
y=td['纳税不遵从记录']


x_mean = x.mean(axis=0)
x_std = x.std(axis=0)
x_scaled = (x-x_mean)/x_std
X_train, X_test, y_train, y_test = train_test_split(
x_scaled, y , stratify=y, random_state=42)
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train, y_train)
print("Accuracy on training set: {:.3f}".format(tree.score(X_train, y_train)))
print("Accuracy on test set: {:.3f}".format(tree.score(X_test, y_test)))

```

降低精度的方法可以考虑将数据中的数值型特征进行精度截断,例如将小数点后保留两位的数值轻微舍入,以达到降低精度的目的。

另外,编写特征的方法可以考虑以下几点:

1、探索更多相关特征:可以对数据集进行更多的探索,寻找和目标变量相关的特征,例如特定的行业、公司类型等等。

2、特征组合:可以考虑将多个特征组合起来形成新的特征,例如将货币单位和注册资金合并为新的特征,或者通过业绩合同数量和专职人员总数得到新的特征,等等。

3、特征选择:可以通过特征选择算法,例如方差分析、相关矩阵等,来筛选出对预测目标有较大影响的特征,以减少模型的复杂度和提高预测效果。

4、数据预处理:可以通过数据清洗、特征缩放、特征变换等方法对原始数据进行预处理,以消除噪声,减少数据的冗余和提高特征的表现能力。
特征衍生:可以通过已有的特征进行进一步衍生,例如通过地理坐标计算距离或者通过时间戳得到更加细粒度的时间特征等。
5、领域知识:可以结合具体领域的知识和经验对数据进行特征工程处理,例如在金融领域中,可以根据股市走势和市场数据构造特征来预测股票价格或指数变动等。

总的来说,特征工程是机器学习中非常重要的一步,通过合适的特征工程方法和技巧,可以极大地提高模型的预测效果和准确率。

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7677456
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:脉冲响应不变法将模拟滤波器转换成为数字滤波器的套路
  • 除此之外, 这篇博客: 机器学习之为什么要数据预处理?如何预处理数据?中的 1.4.哪些模型对标准化处理比较敏感? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 基于距离度量的模型、决策边界学习模型:KNN、kmeans聚类、感知机和SVM
      1、由于距离对特征之间不同取值范围非常敏感,若某个特征取值非常大而导致其掩盖了特征之间的距离对总距离的影响,这样距离模型便不能很好地将不同类别的特征区分开。所以基于距离读量的模型是十分有必要做数据预处理的,此类模型在标准化处理后可有可能提高精度。

      2、有些模型在各个维度进行不均匀伸缩后,最优解与原来不等价,例如SVM。对于这样的模型,除非本来各维数据的分布范围就比较接近,否则必须进行z-score,以免模型参数被分布范围较大或较小的数据占住主导地位。

    • 判别模型:指模型直接学习后验分布来进行分类,如逻辑回归
      有些模型在各个维度进行不均匀伸缩后,最优解与原来等价,例如逻辑回归。对于这样的模型,是否标准化处理数据理论上不会改变最优解。但是,由于实际求解往往使用迭代算法,如果目标函数的形状太"扁",迭代算法可能收敛得很慢甚至不收敛。所以对于具有伸缩不变性的模型, 最好也进行标准化处理处理数据。

    • 通过迭代优化算法求解最优解的模型:如逻辑回归模型
      使用归一化来标准化处理数据可以加快迭代优化算法求最优解的速度, 如运用梯度下降,其损失函数的等高线是椭圆形,需要进行多次迭代才能达到最优点,如果进行归一化了,那么等高线就是圆形的,促使往原点迭代,从而导致需要迭代次数较少。因此如果机器学习模型使用梯度下降法求最优解时,归一化往往非常有必要,否则很难收敛甚至不能收敛。

    • 概率模型:如决策树、基于决策树的Boosting和Bagging等集成学习模型、随机森林
      树模型是通过寻找最优分裂点构成的,样本点的特征缩放不影响分裂点的位置,对树模型的结构也不造成影响,而且树模型不能进行梯度下降,因为树模型是阶跃的,阶跃是不可导的,因此不需要归一化。
      决策树、基于决策树的Boosting和Bagging等集成学习模型对于特征取值大小并不敏感。因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率。

  • 您还可以看一下 张传波老师的软件设计是怎样炼成的?课程中的 整个程序需要考虑的设计规范小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对问题一:如何使用决策树进行训练集的编写?除此之外,还有什么方法可以用于降低训练集的精确度?另外,请问还有其他用于编写特征的方法吗?

    决策树是机器学习常用算法,可用于分类和回归问题,其训练集编写步骤如下:

    1. 收集数据:收集特征和对应的分类/回归标签。

    2. 准备数据:将数据集拆分为训练集和测试集,用于评估模型的性能,同时进行特征选择,去除冗余的特征。

    3. 训练模型:使用训练集训练决策树模型,通过算法选择最佳特征来创建分支节点,直至生成完整的决策树模型。

    4. 测试模型:使用测试集对决策树模型进行验证和评估,评估指标包括准确率和召回率等。

    在训练集编写过程中,为了降低训练集的精确度,可以通过以下方法:

    1. 减少训练集样本量:通过删除少量的样本,降低训练集的复杂度,从而降低精度。

    2. 扰动数据:在训练集中添加随机噪声或扰动,通过一定程度的失真来降低其精度。

    除了决策树算法,还有其他方法可以用于编写特征,如神经网络、支持向量机和随机森林等。其中神经网络可通过深度学习框架进行搭建和训练,支持向量机和随机森林则可通过Scikit-learn等开源工具库进行实现。特征编写的具体方法与应用场景有关,需要根据实际需求进行选择。