我正在努力完成这门课程,希望能够在春季之前完成这种入门级别的课程。这是我在这个令人难以置信的资源上的第一篇文章,并将尽我所能遵守发布格式。作为加强我的学习和致力于长期记忆的一种潜在方式,我正在我自己的数据集上尝试相同的事情,该数据集包含超过 500 个条目,其中包含与我更相关的数据,而不是虚拟数据。
我正在学习数据预处理阶段,如果我理解正确的话,您可以在其中填写缺失值并将列分成各自的 X 和 Y,以便稍后输入模型。
所以在课程示例中,它是左上角的国家数据集。然后左下角是我自己的数据数据库,我在我玩的多人游戏中保存了大约一年。它有 100 个左右的角色,您可以从 5 种不同的类别角色之间进行选择。
产生的不同输出是怎么回事,唯一的区别是数据集(.csv 文件)?该课程的数据集看起来不错;第一列国家(文本类别)在输出中变成二进制向量,不是吗?为什么我的数据集上的输出省略了列,并产生了这些看起来很奇怪的元组,后面跟着一个看起来像随机数的东西?我尝试删除 np.array 函数,尝试在每个级别打印每个输出,但无法查看导致差异的原因。我希望在我的数据集上它将字符的名称转换为二进制向量(1s/0s 的组合?),以便计算机可以理解差异并将它们映射到适当的结果。相反,我得到了我以前从未见过的奇怪的输出。
编辑:事实证明,这些奇怪的数字组合就是所谓的“稀疏矩阵”。必须从产生 csr_array 的 type() 开始做一些研究。如果我理解我正确阅读的内容,那么里面的所有内容都会占用一列,所以我只是使用 [:] 尝试了所有行/列,我没有收到错误。
非常感谢您的时间和帮助。
编辑:多亏了这个线程,我才能完成这个数据预处理/导入/清理/阶段练习,使用我自己的约 550 行数据集进行特征缩放。
import pandas as pd
import numpy as np
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, LabelEncoder, StandardScaler
from sklearn.model_selection import train_test_split
# IMPORT RAW DATA // ASSIGN X AND Y RAW
df = pd.read_csv('datasets/winpredictor.csv')
X = df.iloc[:, :-1].values
y = df.iloc[:, -1].values
# TRANSFORM CATEGORICAL DATA
ct = ColumnTransformer(transformers=\
[('encoder', OneHotEncoder(), [0, 1])], remainder='passthrough')
le = LabelEncoder()
X = ct.fit_transform(X)
y = le.fit_transform(y)
# SPLIT THE DATA INTO TRAINING AND TEST SETS
X_train, X_test, y_train, y_test = train_test_split(\
X, y, train_size=.8, test_size=.2, random_state=1)
# FEATURE SCALING
sc = StandardScaler(with_mean=False)
X_train[:, :] = sc.fit_transform(X_train[:, :])
X_test[:, :] = sc.transform(X_test[:, :])