关于数据框中表格的问题

我正在尝试完成一个练习,即在Python中构建一个简单的机器学习算法。这涉及到一个包含宝可梦战斗和胜者的样本内容的数据框。我要做的是:我有一个包含超过50000个宝可梦战斗样本的数据集,我想计算每个宝可梦赢得战斗的次数,并将这个数字插入到一个包含每个宝可梦一些数据的表格中。代码如下(在Jupyter笔记本中):

import pandas as pdimport numpy as nppokemon = pd.read_csv('datas/pokemons_data.csv')combates = pd.read_csv('datas/combats.csv')pokemonnome_corrigido = dict(zip(pokemon['#'], pokemon['Name']))combates = combates[['First_pokemon', 'Second_pokemon', 'Winner']].replace(nome_corrigido)combatesprimeiro = combates['First_pokemon'].value_counts()segundo = combates['Second_pokemon'].value_counts()vitorias = combates['Winner'].value_counts()total_de_batalhas = primeiro + segundopercentual_vitorias = vitorias/total_de_batalhaspercentual_vitorias = percentual_vitorias.sort_values()percentual_vitorias.head()vitorias.head()pokemon['status_total'] = pokemon['Hit Points'] + pokemon['Attack'] +  pokemon['Defense'] + pokemon['Sp. Atk'] + \ pokemon['Sp. Def'] + pokemon['Speed']pokemon['vitorias'] = vitorias[0]pokemon['percentual_vitorias'] = percentual_vitorias[0]pokemon.iloc[:, [1, -3]].head()from sklearn.model_selection import train_test_splitx = pokemon['status_total']y = pokemon['percentual_vitorias']x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25)from sklearn.linear_model import LinearRegressionx_train = np.array(x_train).reshape(len(x_train) , 1)y_train = np.array(y_train).reshape(len(y_train) , 1)y_test = np.array(y_test).reshape(len(y_test) , 1)x_test = np.array(x_test).reshape(len(x_test) , 1)modelo_linear = LinearRegression()modelo_linear.fit(x_train, y_train)LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)modelo_linear.predict(x)

问题:1) 第一个问题出现在’pokemon[‘vitorias’] = vitorias[0]’这一行。很明显,新列只会填充值“152”,这是“vitorias”数组中的第一个条目(如果没有[0],我会得到NaN,因为我将整个向量映射到数据集中的一个单元格)。我的意图是:在combats.csv数据集中有一行,第一列是一个宝可梦,第二列是另一个宝可梦,第三列是这场战斗的获胜者。我计算了某些宝可梦获胜的次数,并创建了这个数组,每个条目是获胜次数按从大到小的顺序排列。152是梦幻赢得战斗的次数。现在我想在新列’vitorias’中只为梦幻填充这个数字152,其他宝可梦的胜利次数对应于它们赢的次数。我不知道该怎么做。我的问题,我的大问题,是如何将vitorias向量的第一个条目152映射到另一个数据集,即’pokemon’数据集中对应’梦幻’的那一行。也就是说,将宝可梦在vitorias向量中的胜利次数映射到pokemon表中的相应条目。

2) 在modelo_linear.predict(x)这一行,我得到的错误是:预期2D数组,但得到的是1D数组。为什么它期望一个2D数组?我如何修复这个问题?

这是pokemons_data.csv:这是pokemons_data.csv我试图在“type2”列旁边插入一个新列,显示例如妙蛙种子的获胜次数。所以我进入这个数据框,combats.csv:

这是combats.csv并尝试计算每个宝可梦的获胜次数,根据ID进行识别(数字1代表妙蛙种子,2代表妙蛙草,等等)。


回答:

使用pd.join/pd.merge()combatespokemon合并,这样你就可以获取First_/Second_pokemon的名称。其余的就简单了。

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注