我正在做一个练习,用python构建一个简单的机器学习算法。它是关于一个数据帧,内容是口袋妖怪战斗和赢家的一个样本。我想做的是:我有一个数据集,有超过50000个pokemon战斗的样本,我想计算他们每个人赢得战斗的次数,我想把这个数字插入一个包含每个pokemon一些数据的表中。代码是(在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”,这是“vitorias”数组中的第一个条目(如果没有[0],我将得到一个NaN,因为我正在将整个向量映射到数据集中的一个单元格)。我打算做的:在数据集中战斗.csv有一行和一列是一个口袋妖怪,第二个是另一个口袋妖怪和第三个是这场战斗的赢家。我计算了一些口袋妖怪赢的次数,并创建了这个数组,每个条目都是从最大数到最后一个数排序的赢数。152是mewtwo赢得战斗的次数。现在我想用这个数字来填充新的‘vitorias’栏,这个数字是152,只针对mewtwo,而另一个pokemon的胜利数对应于他们赢了多少次。我不知道怎么做。我的问题,我的大问题,是映射,例如,152,它是vitorias向量中的第一个条目,到另一个数据集“pokemon”数据集中“mewtwo”所在的对应行。也就是说,将vitorias向量中pokemon的获胜次数映射到pokemon表中相应的条目。你知道吗
2)在modelo生产线上_线性预测(十) 我得到:预期的2D数组,得到的是1D数组“ 为什么它需要一个二维数组?我该怎么修?你知道吗
这是口袋妖怪_数据.csv: 我想在“type2”一栏旁边的一个新的一栏里插入,比如说,布尔巴索的获胜次数。所以我在这个框架里战斗.csv地址:
试着数一数每个口袋妖怪的获胜次数,由ID标识(数字1代表bulbasaur,数字2代表ivysaur,等等…)。你知道吗
在
combates
和pokemon
之间使用pd.join/pd.merge()
,这样就可以获得First_/Second_pokemon
的名称。剩下的就容易了。你知道吗相关问题 更多 >
编程相关推荐