【问题标题】:How do I perform prediction algorithms on survey data? [closed]如何对调查数据执行预测算法? [关闭]
【发布时间】:2022-01-10 22:02:52
【问题描述】:

例如-我有一个这样的数据集

如果我有一个像"Son 19-30 Read the book No" 这样的输入,那么我如何根据这个得到online shopping 的预测?我应该考虑哪种机器学习方法?

【问题讨论】:

  • 您可以使用支持向量机、knn,或者只是逻辑回归。在将其提供给模型之前,您必须进行一些数据预处理。像填写缺失值、降维、分箱、将文本数据转换为数字数据(如 one-hot 编码等)。我无法向你解释所有这些话题。你必须自己弄清楚。
  • 你真的只有那五行数据吗?还是你给我们的那五行只是一个例子,而你实际上还有更多?
  • 这是一个例子。

标签: python algorithm machine-learning nlp prediction


【解决方案1】:

您可以对这个问题使用任何分类算法,但在此之前,您必须对数据进行预处理 对于性别,您可以使用 0-1。 1 代表儿子,0 代表女孩 对于年龄,您可以将 onehotencoder 0-2 分类为不同年龄组。 对于休闲,您必须使用 NLP 技术来分隔句子中的关键字,例如游戏、阅读书籍、互联网、音乐。这些关键字可以在 onehotencoder 中使用。

毕竟你可以应用任何分类算法。

【讨论】:

    【解决方案2】:

    机器学习最重要的方面之一是数据。您的数据集数量非常少。 另一方面,它是具有 2 个类的二元分类。只有一个 NO 类样本,这主要使您的模型倾向于预测是。

    因此,我建议您先找到更多数据,然后再使用决策树、支持向量机和逻辑回归进行预测。

    【讨论】:

    • 是的,只有这五行数据,决策树可能会得出结论:“如果是女孩,它不会在网上购物;如果是男孩,它会在网上购物”或“如果它会看书,不会在网上购物;如果它不看书,就会在网上购物”。
    【解决方案3】:

    好的,让我们开始吧。 首先,我们需要对数据进行预处理。

    import pandas as pd
    from sklearn import preprocessing #for data preprocessing
    
    df = ... #it's var for your table
    

    我们需要将性别设为二进制(0 - 男性,1 - 女性)

    new_gender_columns = pd.get_dummies(df['Gender'])
    

    然后将 new_gender_columns 添加到您的 DataFrame 中

    df = df.join(new_gender_columns)
    

    我们需要删除旧的对象性别列

    df.drop('Gender', axis=1, inplace=True)
    

    但我们需要对已婚列进行相同的处理。例如,我们可以为所有对象列定义函数或为 Married 编写以前的代码。

    def df_dummies(df, columns: list):
       for col in columns:
          new_dummies_columns = pd.get_dummies(df[col])
          df = df.join(new_dummies_columns)
          df.drop(col, axis=1, inplace = True)
       return df
    

    现在,列出对象列:

    obj_cols = ['Gender', 'Married']
    

    运行函数:

    df = df_dummies(df, obj_cols)
    

    然后我们有可以由标签编码器处理的列。例如年龄:

    0-18 = 标签 0

    19-30 = 标签 1

    等等

    让我们列出这些列:

    labels_cols = ['Age', 'Leisure', 'Online Shopping']
    le = preprocessing.LabelEncoder()
    for col in labels_cols:
       le.fit(df[col])
       df[col] = le.transform(df[col])
    

    现在,机器学习。让我们导入随机森林分类器。因为我们需要预测类别(“是”或“否”,1 或 0)。

    from sklearn.ensemble import RandomForestClassifier
    
    rfc = RandomForestClassifier()
    rfc.fit(df.iloc[:, :-1], df.iloc[:, -1])
    

    好的,模型很好,你可以测试它了。一路平安,年轻的学徒。

    【讨论】:

    • 随机森林通常比决策树提供更可靠的结果,但我发现决策树对初学者来说更有趣,因为它们更容易被打印和理解。换句话说,随机森林比决策树更有“黑盒子”的感觉。
    • 执行 labels_cols = ['Age', 'Leisure', 'Online Shopping'] le = preprocessing.LabelEncoder() for col in labels_cols: le.fit(df[col ]) df[col] = le.transform(df['col'])。错误是 Keyerror: col
    • 请把“col”编辑成col
    猜你喜欢
    • 2013-11-27
    • 2020-08-29
    • 2018-08-15
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多