Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何对矩阵(或数据集)进行分类_Python_Machine Learning_Classification_Bayesian_Naivebayes - Fatal编程技术网

Python 如何对矩阵(或数据集)进行分类

Python 如何对矩阵(或数据集)进行分类,python,machine-learning,classification,bayesian,naivebayes,Python,Machine Learning,Classification,Bayesian,Naivebayes,给定一个分类问题,训练数据如下所示: input - output -------------- A 100 B 150 C 170 .............. 其中A、B、C是大数据集,每个都有6个变量,大约5000行 问题是:如何包装输入,以便对其他数据集输入(如这些)使用分类算法 我尝试将训练分类器值附加到每一行,并对它们进行训练。对于一个新条目,每一行都将被分类,我将取平均值作为整个数据集的分类器。但是我使用朴素贝叶斯并没有得到很好的结果 我是否应

给定一个分类问题,训练数据如下所示:

input - output
--------------
A       100
B       150
C       170
..............
其中A、B、C是大数据集,每个都有6个变量,大约5000行

问题是:如何包装输入,以便对其他数据集输入(如这些)使用分类算法

我尝试将训练分类器值附加到每一行,并对它们进行训练。对于一个新条目,每一行都将被分类,我将取平均值作为整个数据集的分类器。但是我使用朴素贝叶斯并没有得到很好的结果

我是否应该继续与其他分类器一起研究此方法?我还可以考虑哪些其他选择

编辑

来自2个事件的示例数据

    OUT Var1    Var2    Var3    Var4    Var5    Var6
0   93  209.2   49.4    5451.0  254.0   206.0   37.7
1       344.9   217.6   14590.5 191.7   175.5   106.8
2       663.3   97.2    17069.2 144.4   2.8     59.9
3       147.4   137.7   12367.4 194.1   237.7   116.2
4       231.8   162.2   11938.4 71.3    149.1   116.3

    OUT Var1    Var2    Var3    Var4    Var5    Var6
964 100 44.5    139.7   10702.5 151.4   36.0    17.9
966     59.8    148.9   3184.9  103.0   96.5    12.8
967     189.7   194.4   7569.6  49.9    82.6    55.2
969     158.5   88.2    2932.4  159.8   232.8   125.2
971     226.4   155.2   3156.3  85.0    4010.5  69.9
对于类似的数据集,我需要预测输出值。我有很多这样的样品

对所有行应用相同的值是否正确?

查看。给定一个输入变量
x
,它有三个不同的类(通常称为“因子”),对于
x
的每个唯一值,您需要在数据集中有一个二进制编码列,以便机器学习算法了解它在处理什么(即,它将能够了解为什么给定的类
'a'
对应于各种输出值)

编辑!!

另一个导入注意事项:您要做的(即将某些特征映射到连续的输出变量上)不称为“分类”。这称为“回归”。在您的情况下,如果您翻转数据并尝试预测
输入
(即a、B或C),则会出现分类问题考虑到你的
输出(你的连续整数)。我将在下面展示如何在你的案例中进行回归。如果你尝试按照你描述的方式进行分类,你将不再拥有
len(set(df['outputs'))
你试图预测的不同类的数量。分类不是你场景中采用的方法

下面是一个简单的例子:

import random
from sklearn.linear_model import LogisticRegression
from sklearn.cross_validation import train_test_split
from sklearn.metrics import r2_score
import pandas as pd
import numpy as np

inputs = ['A', 'B', 'C']

# create some random data similar to yours
df = pd.DataFrame({'input': [random.choice(inputs) for _ in range(5000)], 'output': [int(abs(n) * 100) for n in np.random.randn(5000)]})

# one-hot-encode the categorical variable 'input' for use in classification
dummies = pd.get_dummies(df['input'])

# merge the one-hot-encoded dummies back with the original data
df = df.join(dummies)

# our feature  matrix (input values as dummies)
X = df[['A', 'B', 'C']]

# our outcome variable
y = df['output']

# split the dataset into train and test objects so we can gauge the accuracy of our classifier
X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.80, random_state = 100)

# our model instance
model = LogisticRegression()

# train the classifier
model.fit(X_train, y_train)

# use trained model from above to predict the class of "new" data
predicted = model.predict(X_test)

# let's see how well the classifier performed
print(r2_score(y_test, predicted))
编辑2


要回答您编辑过的问题,只要每个示例中的行来自同一类,那么是的,您应该对示例中的每一行应用相同的值。对于上面的第一个“事件”,如果所有行(在索引0到4处)属于同一类/组,则应将
93
应用于样本中的所有行(类中的所有行).

什么?我建议您阅读以下内容:。似乎您缺少机器学习分类的一些基本原则。但是,是的,您可以尝试其他分类器。这与分类器无关,问题是:如何处理数据。我处理的变量不是字符串或数字,而是整个数据集。这也会很有用:是的,我理解分类和回归之间的区别。我在数据集上应用它没有问题,但在这种情况下,我对数据集本身有一个问题。我编辑了这篇文章。无论如何感谢你的解释。我很感激:)。请参阅上面的第二次编辑。我希望这能回答你的问题。