我正在尝试练习以python构建简单的机器学习算法。它与一个数据帧有关,该数据帧内容是口袋妖怪战斗和胜利者的样本。我正在尝试做的事情:我有一个超过50000个神奇宝贝战斗样本的数据集,我想统计每个神奇宝贝战斗赢得了多少次战斗,我想将该数字插入包含每个神奇宝贝的一些数据的表格中。代码是(在Jupyter笔记本中):
import pandas as pd
import numpy as np
pokemon = pd.read_csv('datas/pokemons_data.csv')
combates = pd.read_csv('datas/combats.csv')
pokemon
nome_corrigido = dict(zip(pokemon['#'], pokemon['Name']))
combates = combates[['First_pokemon', 'Second_pokemon',
'Winner']].replace(nome_corrigido)
combates
primeiro = combates['First_pokemon'].value_counts()
segundo = combates['Second_pokemon'].value_counts()
vitorias = combates['Winner'].value_counts()
total_de_batalhas = primeiro + segundo
percentual_vitorias = vitorias/total_de_batalhas
percentual_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_split
x = 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 LinearRegression
x_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”填充,这是“维多利亚”数组中的第一个条目(如果没有[0],我将得到一个NaN,因为我将整个矢量映射到单元格中数据集)。我想要做的是:在数据表Fights.csv中,有一行带有一列是神奇宝贝,第二个是另一个神奇宝贝,第三个是这场战斗的胜利者。我计算了一些口袋妖怪获胜的次数,并创建了这个数组,每个条目都是从最大数到最后一个数的韩元数。 152是梅沃思赢得战斗的次数。现在,我只想在两列中用这个数字152填充新的“维多利亚”列,而其他宠物小精灵的胜利次数则对应于他们赢得了多少次。我不知道怎么做。我的问题(我的大问题)是将例如vitorias向量中的第一个条目152映射到相应行,其中“ mewtwo”在另一个数据集“ pokemon”数据集中。即,将维多利亚州向量中的宠物小精灵的胜利次数映射到宠物小精灵表中的相应条目。
2)行modelo_linear.predict(x) 我得到了:预期的2D阵列,取而代之的是1D阵列” 为什么要期待2D阵列?我该如何解决?
这是pokemons_data.csv:
我正在尝试在“ type2”列旁边的新列中插入例如bulbasaur的获胜次数。因此,我进入了这个datframe,即fightings.csv:
答案 0 :(得分:0)
在pd.join/pd.merge()
和combates
之间使用pokemon
,以便获得First_/Second_pokemon
的名称。其余的将很容易。