我有一个包含15个样本的数据集。它有3个特征和一个目标标签。我该如何使用Python(Pandas)将对应于这3个特征的值加载到数组中?
我想在这个数据集上训练一个决策树分类器。为此,我需要将样本加载到数组中,使得所有数据点都在数组X中,对应的标签在另一个数组Y中。我应该如何操作?
数据集看起来如下所示:
x1 x2 x3 z
0 5.5 0.5 4.5 2
1 7.4 1.1 3.6 0
2 5.9 0.2 3.4 2
3 9.9 0.1 0.8 0
4 6.9 -0.1 0.6 2
5 6.8 -0.3 5.1 2
6 4.1 0.3 5.1 1
7 1.3 -0.2 1.8 1
8 4.5 0.4 2.0 0
9 0.5 0.0 2.3 1
10 5.9 -0.1 4.4 0
11 9.3 -0.2 3.2 0
12 1.0 0.1 2.8 1
13 0.4 0.1 4.3 1
14 2.7 -0.5 4.2 1
我已经将数据集加载到一个数据框中:
import pandas as pd
df = pd.read_csv('C:\Users\Dell\Downloads\dataset.csv')
print(df.to_string())
我需要知道如何将特征x1、x2和x3对应的值加载到X中(作为训练样本),以及将标签z对应的值加载到Y中(作为训练样本的标签)。
谢谢。
回答:
首先,你需要将数据加载到一个数据框中。
由于你的数据格式非常特殊,我将其转换为常规的.csv格式,以便更容易理解这个示例。
x1,x2,x3,z
5.5,0.5,4.5,2
7.4,1.1,3.6,0
5.9,0.2,3.4,2
9.9,0.1,0.8,0
6.9,-0.1,0.6,2
6.8,-0.3,5.1,2
4.1,0.3,5.1,1
1.3,-0.2,1.8,1
4.5,0.4,2.0,0
0.5,0.0,2.3,1
5.9,-0.1,4.4,0
9.3,-0.2,3.2,0
1.0,0.1,2.8,1
0.4,0.1,4.3,1
2.7,-0.5,4.2,1
如果你已经将数据加载到数据框中,那么工作已经完成了一半。我提供了一个使用“caret”包进行线性回归模型的示例。
library("caret")
my.dataframe <- read.csv("myExample.csv", header = T, sep =",")
fit <- train(z ~ ., data = my.dataframe, method = "lm")
fit
基本上,你只需要将method中的“lm”替换为其他模型的名称即可训练其他类型的模型。以下是可供选择的模型列表:http://topepo.github.io/caret/available-models.html
要训练一个随机森林模型,你可以输入以下代码:
library("caret")
my.dataframe <- read.csv("myExample.csv", header = T, sep =",")
fit <- train(z ~ ., data = my.dataframe, method = "rf")
fit
但也要注意,你的数据量非常有限——并不是每个模型都适合只有15个数据点的情况。
例如,随机森林模型会给出以下警告:
45: In randomForest.default(x, y, mtry = param$mtry, …) : The response has five or fewer unique values. Are you sure you want to do regression?