预测特定值在数据集中的位置的最佳数据分析方法

Best data analysis method to predict where a certain value will fit in a dataset

我正在使用一个非常小的数据集来自学预测数据分析。 我正在使用 Weka 和 Orange 来尝试解决这个问题。

首先,我使用这个 csv 文件来训练系统:

gender,weight
M,82
F,71
M,90
F,76
M,88
F,56
M,100
F,63
M,84
F,79
M,92
F,66

你会注意到所有的 F 值都在 80 以下,所有的 M 值都在 80 以上。

然后我有这个数据文件:

weight, gender
70,,
100,,
69,,
76,,
99,,

请注意缺少 'gender' 值。

我想设计一个系统来读取数据文件,并根据一些数据分析将 M 或 F 放入性别字段。

我研究了线性回归,但这涉及到两个移动值之间的关系(随着 X 增加 - Y 也增加)

然后我查看了 K-Clustering,但所做的只是向我展示了两个 M > 80 和 F < 80 的集群

请问我可以使用一个系统来尝试对我的数据集应用一些预测吗?

非常感谢

这看起来像 decision tree 可以轻松完成的事情。 我为您查找了一个 weka tutorial,因为我从未使用过它。但是概念是一样的。

从 Ilyas 的回答开始,这里是 python's scikit-learn documentation. I'd suggest checking out the classification entries in the supervised learning doc for python's scikit-learn, found here.

按照 Ilyas Moutawwakil 的建议,使用 Weka,您可以这样做:

首先,将您的数据转换为 ARFF(ARFF 格式在其 header 中指定分类值以避免 CSV 文件和潜在的 missing/additional 值出现问题):

你的训练数据:

@relation train

@attribute weight numeric
@attribute gender {F,M}

@data
82,M
71,F
90,M
76,F
88,M
56,F
100,M
63,F
84,M
79,F
92,M
66,F

您想要预测的数据:

@relation predict

@attribute weight numeric
@attribute gender {F,M}

@data
70,?
100,?
69,?
76,?
99,?

然后您可以使用决策树算法,例如 J48 来训练您的训练数据并在您的其他数据集上生成预测(当然,调整到 weka.jar 和您的数据集的路径):

java -cp weka.jar weka.classifiers.trees.J48 -t train.arff -T predict.arff -p 1

注意: 使用 -p 1 我们将第一个属性 (weight) 添加到输出中。

如果您希望将预测结果输出到 CSV 文件 (predictions.csv),您可以这样做:

java -cp weka.jar weka.classifiers.trees.J48 -t train.arff -T predict.arff -classifications "weka.classifiers.evaluation.output.prediction.CSV -p 1 -file predictions.csv -suppress"

predictions.csv 文件将如下所示:

inst#,actual,predicted,error,prediction,weight
1,1:?,1:F,,1,70
2,1:?,2:M,,1,100
3,1:?,1:F,,1,69
4,1:?,1:F,,1,76
5,1:?,2:M,,1,99