Preprocesamiento y cálculo de matriz de similitud de datos de atributos de héroes de League of Legends

Tabla de contenido

I. Introducción

2. Tarea 1

1. Complete los valores que faltan

2. Use la mediana para completar los valores faltantes de la columna de atributo "valor de vida"

3. Complete el valor faltante de la columna de atributo "Valor de salud" con el valor medio

3. Tarea 2


Nota: Los recursos de datos de atributos de héroes de League of Legends se pueden obtener de los recursos del blog.

I. Introducción

Como un antiguo juego de Dota, League of Legends puede describirse como el creador del juego Dota.Este juego nos ha acompañado durante nuestros días escolares.

A continuación, complete los valores faltantes de los datos de atributos de héroe adquiridos de League of Legends y analice la matriz de similitud de los diez personajes principales calculada a partir de los datos reparados.

2. Tarea 1

Verifique los valores faltantes en los datos originales y complete los valores faltantes de la columna de atributos "Valor de vida" con la mediana, y complete los valores faltantes de la columna de atributos "Valor mágico" con la media.

1. Complete los valores que faltan

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
pd1 = pd.read_csv("D:\\dataspace\\lolData.csv")
print('缺失值情况',pd1.isnull().sum())
life = pd1.iloc[:,2].values
magic=pd1.iloc[:,4].values

Verifique los valores faltantes como se muestra a continuación: 

 2. Use la mediana para completar los valores faltantes de la columna de atributo "valor de vida"

lifelist=[]
for i in range(len(life)):
    if life[i]>0 and life[i]<800:
        lifelist.append(life[i])
print(lifelist)
median1=int(np.median(lifelist))
print(median1)
for i in range(len(life)):
    if life[i]<=0 or life[i]>=800 or np.isnan(life[i]):
        life[i]=median1
print('处理后的生命值数据',life)

3. Complete el valor faltante de la columna de atributo "Valor de salud" con el valor medio

magiclist=[]
for i in range(len(magic)):
    if magic[i]>0 and magic[i]<800:
        magiclist.append(magic[i])
print(magiclist)
mean=int(np.mean(magiclist))
print(mean)
for i in range(len(magic)):
    if magic[i]<=0 or magic[i]>=800 or np.isnan(magic[i]):
        magic[i]=mean
print('处理后的魔法值数据',magic)

 

3. Tarea 2

De acuerdo con los datos reparados de la tarea 1, calcule la matriz de similitud de los diez primeros caracteres en la tabla de datos y descubra los dos caracteres que están más cerca y más lejos.

Magia Lingluo

Sakaha Kasumi

Qinggang sombra Camille

ivern esmeralda

Caballero furioso Kled

Gorrión de roca Taliyah

Rey Dragón Aurelion Sol

Jin

Sacerdote de las bestias marinas Illaoi

Gemelos de caza eterna Qian Jue

 Primero calcule la matriz de similitud de los diez roles principales en la tabla de datos.

head1=pd1.head(10)
head1=pd.DataFrame(head1)
head2=head1.drop(columns="英雄名字")
# print(head1)

res= np.zeros((10,10))

def cosine_similarity(x, y):
    x=np.array(x)
    y=np.array(y)
    num = np.dot(x,y)
    denom = np.linalg.norm(x) * np.linalg.norm(y)
    return num / denom
for i in range(10):
    for j in range(10):
        res[i][j]= cosine_similarity(head2.iloc[i,:],head2.iloc[j,:])
print(res)

 

Calcula la distancia euclidiana. 

def dist(x,y):
    x = np.array(x)
    y = np.array(y)
    dist1 = np.linalg.norm(x-y)
    return dist1
dist11=[]
for i in range(10):
    for j in range(i+1,10):
        dist2= dist(head2.iloc[i,:],head2.iloc[j,:])
        dist11.append(dist2)
        print("{0}和{1}的欧几里得距离为{2}".format(i, j,dist2))
print('欧几里得距离\n',dist11)
print('最大值:',max(dist11))
print('最小值',min(dist11))
print(np.argmin(dist11))
print(np.argmax(dist11))

 

 Encuentra los dos caracteres más cercanos y más lejanos.

for i in range(10):
    for j in range(i+1,10):
        if dist(head2.iloc[i, :], head2.iloc[j, :])==min(dist11):
            print("{0}和{1}的欧几里得距离最小".format(i, j))
            a=head1.iloc[i,1]
            b=head1.iloc[j,1]
            print("距离最小的两个英雄是:")
            print(a,'|',b)
        elif dist(head2.iloc[i, :], head2.iloc[j, :])==max(dist11):
            print("{0}和{1}的欧几里得距离最大".format(i, j))
            a = head1.iloc[i, 1]
            b = head1.iloc[j, 1]
            print("距离最大的两个英雄是:")
            print(a, '|', b)

 

 

 

 

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_52051577/article/details/131386038
Recomendado
Clasificación