Я пытаюсь выполнить упражнение по созданию простого алгоритма машинного обучения на 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", которое является первой записью в массиве "vitorias" (без [0] я получу NaN, потому что я отображаю весь вектор в ячейку в наборе данных).Что я намеревался сделать: в наборе данных combats.csv есть строка со столбцом, который является покемоном, второй - еще один покемон, а третий - победитель этого сражения.Я посчитал, сколько раз выиграл какой-то покемон, и создал этот массив, в котором каждая запись - это число выигранных, отсортированных от наибольшего к последнему.152 - это количество раз, когда я выиграл два сражения.Теперь я хочу заполнить новый столбец «Витории» этим числом 152 только для двух, а количество побед для другого покемона соответствует тому, сколько раз они выиграли.Я не знаю как это сделать.Моя проблема, моя большая проблема, состоит в том, чтобы сопоставить, например, 152, который является первой записью в векторе vitorias, с соответствующей строкой, где «mewtwo» находится в другом наборе данных, наборе данных «pokemon».То есть, чтобы отобразить число побед покемона в векторе vitorias в соответствующую запись в таблице покемонов.
2) в строке modelo_linear.predict (x), которую я получил: ожидаемый двумерный массив, получилВместо 1D массива "Почему он ожидал 2D массив? Как я могу это исправить?
Это pokemons_data.csv: Я пытаюсь вставить количество победскажем, бульбазаур, в новом столбце, кроме столбца "type2". Поэтому я иду в этот кадр данных, combats.csv:
и пытаюсь подсчитать числовыигрыши каждого покемона, идентифицированные по идентификатору (цифры 1 для бульбазаура, 2 для ивисаура и т. д.).