Análisis y predicción de datos de comportamiento del jugador del juego basado en python

Análisis y predicción de datos de comportamiento del jugador del juego

1. Introducción de los antecedentes del proyecto y los objetivos del análisis

1. Requisitos y escenarios de aplicación

Con el desarrollo continuo de la industria de los juegos, cada vez más empresas de juegos necesitan realizar análisis de datos sobre las operaciones de los juegos para optimizar las estrategias operativas y mejorar la retención de usuarios y los ingresos. El análisis de las operaciones del juego puede ayudar a las empresas a comprender el comportamiento de los usuarios, las fuentes de ingresos, las tendencias del mercado, etc., y guiar a las empresas para adaptar las estrategias de gestión de usuarios y marketing. Los escenarios de aplicación para los requisitos de análisis de operaciones de juegos incluyen:

1. Las empresas de juegos optimizan los juegos en función de los datos del usuario

Mediante el análisis de datos como el comportamiento de los juegos, las tasas de retención y los hábitos de pago de diferentes usuarios, las empresas de juegos pueden ubicar con precisión las necesidades y los hábitos de los diferentes grupos de usuarios, brindar servicios de juegos personalizados para diferentes usuarios, optimizar la experiencia del usuario y aumentar las tasas de retención y los ingresos. .

2. Estrategia de marketing a medida

Las empresas de juegos pueden formular estrategias de marketing más precisas mediante el análisis de las tendencias del mercado y la competencia. De acuerdo con las características de la región del usuario, edad, género, preferencia de juego, etc., desarrolle productos de juego y planes de marketing correspondientes, y optimícelos para las necesidades del usuario.

3. Supervise el estado operativo del juego y ajuste la estrategia a tiempo.

Las compañías de juegos pueden realizar un monitoreo en tiempo real basado en los datos del usuario y del juego, comprender el estado operativo del juego, ajustar las estrategias de manera oportuna y mejorar la experiencia del usuario y la rentabilidad del juego.

2. Objetivos del análisis

Tomando como ejemplo un proyecto de análisis de la situación de la operación de un juego, los objetivos del análisis incluyen:

1. Análisis del comportamiento del usuario

Al analizar los datos del usuario, incluido el tiempo activo del usuario, el tiempo de retención del usuario, la distribución del nivel de usuario, la proporción de usuarios que pagan, etc., proporciona a las empresas de juegos referencias de datos sobre las preferencias y los hábitos de comportamiento del usuario. Con base en el análisis del comportamiento de los usuarios, las empresas de juegos pueden comprender con mayor precisión las necesidades de los usuarios, optimizar los servicios de juegos, brindar una mejor experiencia de usuario y aumentar las tasas de retención y pago.

2. Análisis de las fuentes de ingresos del juego

Al analizar los datos de las fuentes de ingresos de los juegos, las empresas de juegos pueden comprender la correlación entre las diferentes fuentes de ingresos, identificar la fuente de ingresos más importante, comprender por qué esta fuente de ingresos es la más importante y analizar y mejorar los hábitos de pago de cada canal. Dicha referencia de datos puede ayudar a las empresas de juegos a determinar la fuente de ingresos más importante y ajustar y optimizar la estrategia de distribución de las fuentes de ingresos.

En resumen, el análisis del funcionamiento del juego puede ayudar a las empresas de juegos a comprender el funcionamiento del juego, formular contramedidas razonables para diferentes problemas, optimizar las estrategias operativas y mejorar la rentabilidad.

2. Fuente y descripción del conjunto de datos

本次课程报告的全部数据来自数据城堡上的公开数据,链接为 

本次数据集一共包涵两万余条数据,110个特征。为了便于分析选取其中的11个特征进行分析。

'user_id' la identificación única del jugador
'avg_online_minutes', el tiempo promedio en línea
'pvp_battle_count' la cantidad de batallas con el jugador
'pvp_lanch_count' la cantidad de veces que el jugador inicia la batalla '
pvp_win_count la cantidad de veces que el jugador gana la batalla
'pve_battle_count' el número de batallas con la computadora
'pve_lanch_count', la iniciativa El número de veces que se lanzó el juego contra la computadora
'pve_win_count' El número de veces que se ganó el juego contra la computadora

user_id ID de jugador único
pay_price cantidad de recarga
pay_count tiempos de recarga
forecast_pay_price cantidad de recarga prevista

3. Aplicación de tecnología de análisis de big data

1. Código de preprocesamiento de datos, anotaciones y resultados de ejecución

1. Importar conjuntos de datos y bibliotecas

df = pd.read_csv('./data/game_player.csv',encoding='gbk')

inserte la descripción de la imagen aquí

2. Cortar las características requeridas,

#Slice para extraer las características requeridas y asígnele el nombre data data
= df[
[
'user_id', #player ID único

                         'avg_online_minutes',              #在线时长
                         'pvp_battle_count',                #与玩家对战次数
                         'pvp_lanch_count',                 #主动与玩家对战的次数
                         'pvp_win_count',                   #与玩家对战获胜的次数
                         'pve_battle_count',                #与电脑对战次数
                         'pve_lanch_count',                 #主动发起与电脑对战的次数
                         'pve_win_count'                    #与电脑对战获胜次数                
                        ]
                   ] 

Datos

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

3. Eliminar valores faltantes y eliminar duplicados

#Eliminar valores faltantes
print('La forma del conjunto de datos antes de eliminar la fila faltante es:', data.shape)
data_1 = data.dropna(axis=0,how='any')
print('La forma de el conjunto de datos después de eliminar la fila que falta For:', data_1.shape)
#Si se usa la forma, la matriz data1 se convertirá en tipo de cadena str

#data1 = data_1['user_id'].drop_duplicates()
data1 = data_1.drop_duplicates()
print('El número total de ID de juegos después de usar el método drop_duplicates para eliminar duplicados:', len(data1))

Y nombre el conjunto de datos procesados ​​como data1
inserte la descripción de la imagen aquí

4. Matriz de similitud de tres características

#Descubra la cantidad de batallas con jugadores, la cantidad de veces para iniciar batallas con jugadores, la cantidad de veces para ganar batallas con jugadores, la matriz de similitud del método Pearson de tres características corr_data1 = data[['pvp_battle_count','pvp_lanch_count
' ,'pvp_win_count']]. corr(method='pearson')
print('La cantidad de batallas con jugadores, la cantidad de veces para iniciar batallas con jugadores, la cantidad de veces para ganar batallas con jugadores:\n', corr_data1 )

inserte la descripción de la imagen aquí

5. Recorte la nueva característica requerida y asígnele el nombre data2

inserte la descripción de la imagen aquí

6. Normalización de la Dispersión

#Estandarización de dispersión #
Función de estandarización de desviación personalizada
def min_max_scale(data1):
data1 = (data1 - data1.min())/ (data1.max()- data1.min())
return data1
#En promedio de tiempo en línea Desviación estandarizada
time_min_max = min_max_scale(data1['avg_online_minutes'])
print('Los datos de tiempo en línea antes de la desviación normalizada son:\n',data1['avg_online_minutes'])
print('Los datos de tiempo en línea después de la desviación normalizada son:\ n', time_min_max)

inserte la descripción de la imagen aquí

7. Unión interna, unión externa, guarde el conjunto de datos después del preprocesamiento

#Fusionar datos 1 y 2
print('Tamaño de marco de datos combinado de unión externa',
pd.concat([datos1,datos2],eje=1,unión='exterior').forma)

#Fusionar datos 1 y 2
print('Tamaño de marco de datos combinado de unión interna',
pd.concat([data1,data2],axis=1,join='inner').shape)

data3 = pd.merge(data1,data2,how='inner',on='user_id')
data3.to_csv('./data/吴硕秋202006180058.csv',sep=';',index=False)
inserte la descripción de la imagen aquí

2. Exploración de datos y construcción de características

1. Análisis de la actividad de los jugadores

(1) Calcule la duración promedio en línea de todos los jugadores
avg_time = data3.avg_online_minutes.mean()
avg_time

inserte la descripción de la imagen aquí

(2) # Calcule la duración promedio en línea de los jugadores que pagan
pay_avg_time = data3[data3.pay_price > 0].avg_online_minutes.mean()
pay_avg_time

inserte la descripción de la imagen aquí

#Utilice el método discreto de ancho igual para registrar la distribución de los tiempos de recarga
pay_cut = pd.cut(data2['pay_count'],40)
print('Discretized recarga times distribution:\n',pay_cut.value_counts())

inserte la descripción de la imagen aquí

(3) Dibuje el diagrama de caja del tiempo promedio en línea del jugador

Dibuje un diagrama de caja del tiempo promedio en línea de todos los jugadores

plt.figure(figsize=(10,10))
plt.boxplot(data3.avg_online_minutes)
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']= False
plt.title('Diagrama de caja del tiempo promedio en línea de todos los jugadores')
plt.show()

inserte la descripción de la imagen aquí

Dibuje un diagrama de caja del tiempo promedio en línea de los jugadores que pagan

plt.figure(figsize=(10,10))
plt.boxplot(data3[data3.pay_price > 0].avg_online_minutes)
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams[ 'axes.unicode_minus']=False
plt.title('Gráfico de cuadro de tiempo en línea promedio de jugador pagado')
plt.show()
inserte la descripción de la imagen aquí

Cuenta los jugadores que han jugado juegos PvP

pvp_avg_time =data3[data3.pvp_battle_count > 0].avg_online_minutes.mean()

inserte la descripción de la imagen aquí

Evaluación
El tiempo promedio en línea de todos los jugadores es de 9,6 minutos, y el tiempo promedio en línea de los jugadores que pagan es de 135,8 minutos, que es aproximadamente 11 veces mayor que el de los jugadores normales. Los jugadores que pagan tienen una mayor actividad.

2. Análisis de la tasa de pago del jugador

(1) Obtener el número de jugadores cuyos tiempos de pago superan 0

inserte la descripción de la imagen aquí

(2) Dibujar un gráfico circular
inserte la descripción de la imagen aquí

3. Análisis de pagos de jugadores y exploración de correlación.

(1) Defina HY, total_pay, HY_AVG, HY_PAY_COUNT, PAY_AVG y PAY_PRO
como el número de jugadores activos, el ingreso total, el ingreso promedio por jugador activo, el número de jugadores activos que pagan, el ingreso promedio por jugador que paga y la tasa de pago.
inserte la descripción de la imagen aquí

(2) La relación entre jugadores activos y cantidad de recarga

inserte la descripción de la imagen aquí

La tasa de pago de este juego es baja y todavía hay espacio para mejoras adicionales. Se pueden llevar a cabo actividades relacionadas para aumentar la tasa de pago.
El consumo per cápita de los jugadores que pagan en este juego es 32, lo que muestra que los usuarios que pagan tienen un fuerte poder adquisitivo en general. Se puede hacer un análisis de seguimiento de los usuarios que pagan para garantizar su pago continuo;

4. Análisis de los hábitos de juego de los jugadores

Tiempos promedio de PVP de usuarios activos

HY_pvp_battle_count = data3[data3.avg_online_minutes> 10].pvp_battle_count.mean()

El número total de pvp activo

HY_count_pvp = data3[data3.avg_online_minutes> 10].pvp_battle_count.sum()

El número de iniciaciones de pvp activas

HY_count_lanch_pvp = data3[data3.avg_online_minutes> 10].pvp_lanch_count.sum()

Probabilidad de que los usuarios activos inicien activamente PVP

HY_rate_lanch_pvp = HY_count_lanch_pvp/HY_count_pvp

El número total de victorias PVP de usuarios activos

HY_num_win_pvp = data3[data3.avg_online_minutes> 10].pvp_win_count.sum()

Probabilidad de victoria JcJ de usuario activo

HY_rate_win_pvp = HY_num_win_pvp/HY_count_pvp

print(f'Promedio de tiempos de JcJ de usuarios activos: {HY_pvp_battle_coun}')
print(f'Probabilidad de que usuarios activos inicien JcJ: {HY_rate_lanch_pvp}')
print(f'Probabilidad de victoria de usuarios activos JcJ: {HY_rate_win_pvp}')

inserte la descripción de la imagen aquí

(2)

Tiempos promedio de PVE de usuarios activos

HY_pve_battle_count = data3[data3.avg_online_minutes> 10].pve_battle_count.mean()

El número total de PVE activos

HY_count_pve = data3[data3.avg_online_minutes> 10].pve_battle_count.sum()

El número de lanzamientos de PVE de usuarios activos

HY_count_lanch_pve = data3[data3.avg_online_minutes> 10].pve_lanch_count.sum()

Los usuarios activos inician la probabilidad de PVE

HY_rate_lanch_pve = HY_count_lanch_pve/HY_count_pve

El número total de victorias PVE de usuarios activos

HY_num_win_pve = data3[data3.avg_online_minutes>=15].pve_win_count.sum()

Probabilidad de victoria de usuario activo PVE

HY_rate_win_pve = HY_num_win_pve/HY_count_pve

print(f'Tiempos promedio de PVE de usuarios activos: {HY_pve_battle_coun}')
print(f'Probabilidad de que los usuarios activos inicien activamente PVE:{HY_rate_lanch_pve}')
print(f'Probabilidad de victoria de PVE de usuarios activos:{HY_rate_win_pve}')
inserte la descripción de la imagen aquí

(3)

Promedio de tiempos de JcJ de usuarios de pago activos

HY_PAY_COUNT_pvp_battle_coun = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pvp_battle_count.mean()

El número total de pvp de protección de tarifa activa pagada

HY_PAY_COUNT_count_pvp = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pvp_battle_count.sum()

El número de iniciaciones pvp activas de protección de tarifa pagada

HY_PAY_COUNT_count_lanch_pvp = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pvp_lanch_count.sum()

Probabilidad de que los usuarios de pago activos inicien PVP

HY_PAY_COUNT_rate_lanc_pvp = HY_PAY_COUNT_count_lanch_pvp/HY_PAY_COUNT_count_pvp

El número total de victorias PVP de usuarios de pago activos

HY_PAY_COUNT_num_win_pvp = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pvp_win_count.sum()

Probabilidad de victoria PVP para usuarios de pago activos

HY_PAY_COUNT_rate_win_pvp = HY_PAY_COUNT_num_win_pvp/HY_PAY_COUNT_count_pvp

print(f'Tiempos promedio de PVP de usuarios de pago activos: {HY_PAY_COUNT_pvp_battle_coun}')
print(f'Probabilidad de usuarios de pago activos para iniciar PVP: {HY_PAY_COUNT_rate_lanc_pvp}')
print(f'Probabilidad de ganar PVP de usuarios de pago activos: {HY_PAY_COUNT_rate_win_pvp} ')

inserte la descripción de la imagen aquí

(4)

El número promedio de veces Pve de usuarios de pago activos

HY_PAY_COUNT_pve_battle_coun = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pve_battle_count.mean()

El número total de pve veces pagadas

HY_PAY_COUNT_count_pve = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pve_battle_count.sum()

El número de iniciaciones de pvp pagado

HY_PAY_COUNT_count_lanch_pve = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pve_lanch_count.sum()

Los usuarios pagos inician activamente la probabilidad de PV

HY_PAY_COUNT_rate_lanc_pve = HY_PAY_COUNT_count_lanch_pve/HY_PAY_COUNT_count_pve

El número total de victorias PVE de usuarios que pagan

HY_PAY_COUNT_num_win_pve = data3[(data3.avg_online_minutes>10) & (data3.pay_price>0)].pve_win_count.sum()

Probabilidad de victoria del PVE del usuario que paga

HY_PAY_COUNT_rate_win_pve = HY_PAY_COUNT_num_win_pve/HY_PAY_COUNT_count_pve

print(f'Tiempos promedio de PVE de usuarios pagos: {HY_PAY_COUNT_pve_battle_coun}')
print(f'Probabilidad de usuarios pagos de iniciar PVE: {HY_PAY_COUNT_rate_lanc_pve}')
print(f'Probabilidad de victoria PVE de usuarios pagos: {HY_PAY_COUNT_rate_win_pve}')
inserte la descripción de la imagen aquí

visualización
inserte la descripción de la imagen aquí

Comentario

1) La cantidad promedio de veces de PVE y PVP de los jugadores activos que pagan es mayor que la de los jugadores activos, y los jugadores activos que pagan están más dispuestos a pasar tiempo en este juego; 2) En las batallas de PVP, la tasa de victorias de los jugadores activos que pagan
es mucho más alto que el de los jugadores activos, lo que indica que nuestros accesorios de juego pueden permitir que APA disfrute de la diversión de ganar la batalla;

3. El código fuente, anotaciones y resultados de operación de la construcción y evaluación del modelo de clasificación.

1. Primero construya una matriz de calor característica para comprender la relación entre cada característica.

Esta parte necesita completar el modelo de regresión y el modelo de clasificación y compararlos, por lo que es particularmente importante comprender la relación entre cada característica. Antes de eso, cree una nueva característica y defina como característica al jugador cuyo tiempo en línea es menos de la mitad del tiempo promedio en línea de todos los jugadores. E importe data3 como la última característica.

inserte la descripción de la imagen aquí

2. Construcción del modelo División del conjunto de datos

Seleccione las nuevas características creadas en la sección anterior para su análisis.

Esta parte divide la etiqueta de datos, entrena el conjunto de prueba y estandariza el conjunto de datos, estableciendo el conjunto de datos en un estado al que el algoritmo puede llamar directamente.
Por cierto, traza la matriz de confusión.

Dividir etiquetas de datos

data3_data = data3.iloc[:, :-1]
data3_target = data3.iloc[:, -1]
#Dividir el conjunto de entrenamiento y el conjunto de prueba
de sklearn.model_selection import train_test_split
data3_data_train, data3_data_test, data3_target_train, data3_target_test = train_test_split(data 3_data, data3_target , tamaño_prueba=0.2, estado_aleatorio=66)

conjunto de datos normalizados

from sklearn.preprocessing import StandardScaler
stdScale = StandardScaler().fit(data3_data_train)
data3_trainScaler = stdScale.transform(data3_data_train)
data3_testScaler = stdScale.transform(data3_data_test)

#Matriz de confusión
de sklearn.metrics import confusion_matrix
def test_pre(pred):
hx = confusion_matrix(data3_target_test, pred)
print('Confusion matrix:\n',hx)

#精确率
P = hx[1,1]/ (hx[0, 1] + hx[1,1])
print('精确率:\n',round(P, 3))

#召回率
R = hx[1,1]/ (hx[1, 0] + hx[1,1])
print('召回率:\n',round(P, 3))

#F1值
F1 = 2 * P * R /(P+R)
print('F1值:',round(F1, 3))

submuestreo
inserte la descripción de la imagen aquí

2. El algoritmo SVM construye el modelo de clasificación y evalúa ROC

Utilice el algoritmo SVM para predecir el conjunto de datos y mostrar los 20 mejores resultados de predicción. La predicción arrojó 2125 resultados correctos y 69 resultados incorrectos con una tasa de precisión del 96%

inserte la descripción de la imagen aquí

El valor F1 de la parte de evaluación
es 0.98 y 0.94
inserte la descripción de la imagen aquí

Dibujar la curva ROC
inserte la descripción de la imagen aquí

3. Construya y evalúe usando Gaussian Naive Bayes

Es consistente con el enfoque SVM, la única diferencia es el algoritmo

inserte la descripción de la imagen aquí

Modelo de evaluación,
en comparación con SVM, la tasa de precisión de este modelo es ligeramente inferior, que es del 75%. Según los resultados del informe de clasificación, la tasa de precisión es 0,98 y 0,54, y el valor f1 es 0,80 y 0,70. En comparación con el svm modelo, hay una gran brecha. Todas las cifras son inferiores.
inserte la descripción de la imagen aquí

Dibujar la curva ROC

inserte la descripción de la imagen aquí

4. El código fuente, anotaciones y resultados de operación de la construcción y evaluación del modelo de regresión

1. Divide el conjunto de datos

La característica de este experimento es que la
parte de "tiempos de recarga" divide las etiquetas de datos, el conjunto de entrenamiento y el conjunto de prueba, y estandariza el conjunto de datos, configurando el conjunto de datos en un estado que el algoritmo puede llamar directamente.
inserte la descripción de la imagen aquí

2. Construcción del modelo experimental de regresión forestal aleatoria

Uso del algoritmo de árbol forestal de regresión
inserte la descripción de la imagen aquí

Dibuje una visualización de los resultados de la regresión
de matplotlib import rcParams
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
fig = plt.figure(figsize=(12, 6))
plt.plot(range(data3_target_test .shape[0]), list(data3_target_test), color='blue'
)
plt.plot(range(data3_target_test.shape[0]), y_pred, color='red', linewidth=2.5 ,linestyle='-.'
)
plt.xlabel('valor del resultado')
plt.ylabel('tarifa en línea')
plt.legend(['resultado verdadero','resultado previsto'])
plt.show()
inserte la descripción de la imagen aquí

Imprima y vea el informe de regresión
Importe el informe, vea el modelo forestal para ver varios datos.
inserte la descripción de la imagen aquí

3. Uso de la construcción del modelo de regresión de vectores de soporte

construcción del modelo

inserte la descripción de la imagen aquí

Visualización de resultados
inserte la descripción de la imagen aquí

Imprimir y ver el informe de regresión
inserte la descripción de la imagen aquí

Evaluación y comparación de los dos modelos
En comparación con el modelo de máquina vectorial, el modelo del método de bosque aleatorio tiene un valor de R cuadrado más alto de 0,84 y la varianza explicada también es de 0,84.

5. Comparación y explicación de los resultados del análisis de varios modelos.

Evaluar y comparar dos modelos de regresión

En comparación con el modelo de máquina vectorial, el modelo del método de bosque aleatorio tiene un valor R cuadrado más alto de 0,84 y la varianza explicada también es 0,84.

Evaluación comparativa de modelos de clasificación

Modelo de evaluación, en comparación con SVM, la tasa de precisión de este modelo es ligeramente inferior, que es del 75%. Según los resultados del informe de clasificación, la tasa de precisión es 0,98 y 0,54, y el valor f1 es 0,80 y 0,70. En comparación con el svm modelo, hay una gran brecha. Todas las cifras son inferiores.

6. Aplicación de tecnología de visualización de datos

1. El código fuente y los resultados de la operación de la primera tecnología de visualización de datos, y una breve descripción.

El dibujo del diagrama de caja, el diagrama de caja puede mostrar claramente las cinco estadísticas de los datos, el valor mínimo, el cuartil inferior, la mediana, el cuartil superior y el valor máximo, y es conciso y fácil de entender. Dado que esta visualización es un análisis del tiempo promedio en línea, se requiere una comparación exhaustiva de múltiples indicadores, por lo que es muy adecuada para dibujar un diagrama de caja.

Dibuje un diagrama de caja del tiempo promedio en línea de los jugadores que pagan

plt.figure(figsize=(10,10))
plt.boxplot(data3[data3.pay_price > 0].avg_online_minutes)
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams[ 'axes.unicode_minus']=False
plt.title('Gráfico de cuadro de tiempo en línea promedio de jugador pagado')
plt.show()

inserte la descripción de la imagen aquí

2. El código fuente y los resultados de la operación de la segunda tecnología de visualización de datos, y una breve descripción.

La ventaja del gráfico circular es que enfatiza la proporción y es fácil de entender. Esta vez, elegimos comparar la brecha entre el número de jugadores que pagan y los que no pagan. Para un conjunto de datos tan pequeño, el gráfico circular puede ver con precisión la proporción y la brecha entre los dos.

Haz un gráfico circular de porcentajes

plt.figure(figsize=(8,8))

dibujo

patches,l_text,p_text = plt.pie([22877 - pay_num , pay_num],
tags=['no pagado', 'pagado'],
labeldistance = 0.3,
colors=['#87CEFA','#FFC0CB'],
explotar = [0.01,0.05],
autopct='%1.1f%%',
distanciapct=1.15)

establecer el tamaño de la etiqueta

para t en l_text:
t.set_size(20)

establecer porcentaje de tamaño de fuente

para t en p_texto:
t.set_size(20)

establecer título

plt.title('La proporción de usuarios pagos a todos los usuarios', tamaño=25)
plt.show()

inserte la descripción de la imagen aquí

3. El código fuente y los resultados de la operación de la tercera tecnología de visualización de datos, y una breve descripción.

La ventaja del histograma es que la diferencia numérica entre diferentes categorías se puede representar por altura, y la simplicidad y eficiencia de un solo dibujo facilita la comparación. Por lo tanto, es fácil hacer diferentes comparaciones por pares de cada dato en un gráfico para mostrar la brecha.

plt.figure(figsize=(15,8))

jugadores de la UA

plt.bar([0.75,2.75,4.75,6.75],[HY_rate_lanch_pve, HY_rate_win_pve, HY_rate_lanch_pvp, HY_rate_win_pvp],width=0.5,alpha=0.5,label='jugador HY activo') plt.bar([
1.25,3.25,5.25 ,7.25],[ HY_PAY_COUNT_rate_lanc_pve,HY_PAY_COUNT_rate_win_pve , HY_PAY_COUNT_rate_lanc_pvp, HY_PAY_COUNT_rate_lanc_pvp],width=0.5,color='r',alpha=0.5,label='Jugadores activos pagados') plt.xtick s([1,3,5,7 ]
, ['Probabilidad de iniciar activamente PVE','Probabilidad de ganar PVE','Probabilidad de iniciar activamente PVP','Probabilidad de ganar PVP']) plt.legend() plt.show
(
)

inserte la descripción de la imagen aquí

7. Conclusión del curso y experiencia

对于本次课程报告,将之前上课所学过的知识全部总结,融会贯通了起来。最主要包括数据预处理,探索性分析,回归模型和分类模型的创建都有了新的理解。

Para el preprocesamiento de datos, el preprocesamiento de datos es un paso importante en cualquier proyecto de análisis de datos, aprendizaje automático o aprendizaje profundo, cuyo propósito es garantizar que no falten datos, conjuntos de datos estandarizados, claros y consistentes para que se puedan realizar mejor varios análisis, modelo ajuste o previsión. La limpieza de datos es el primer paso en el preprocesamiento de datos, incluida la eliminación de valores duplicados, la resolución de valores faltantes y el procesamiento de valores atípicos. Luego, el procesamiento de características es otra parte importante del preprocesamiento de datos.El procesamiento de características incluye la selección, extracción y transformación de características de datos. Después del primer paso de limpieza, es necesario ordenar los datos y extraer características finas. El éxito del preprocesamiento de datos es importante antes del análisis de datos a gran escala y las fases de aprendizaje automático, ya que ayuda a mejorar la precisión y maximizar la claridad de las muestras del ruido y el determinismo que impulsa los resultados finales.
Para el análisis exploratorio, antes de las etapas de preprocesamiento y modelado de datos, profundice en todos los detalles del conjunto de datos y obtenga tanta información y posibles intereses como sea posible para planificar de manera eficiente el próximo algoritmo y las tareas de modelado y reducir el riesgo.
Los modelos de regresión son una tarea común de aprendizaje supervisado para predecir variables numéricas, que no solo pueden mejorar la exactitud y precisión de los datos, sino que también juegan un papel importante en muchos problemas prácticos. Comprender diferentes tipos de modelos de regresión y criterios de evaluación, y dominar las habilidades de estrategia de optimización conducirá a una mejor selección, construcción y validación de modelos y mejores resultados predictivos.
El modelo de clasificación es una tarea común de aprendizaje supervisado, que no solo puede mejorar la precisión de la clasificación y la precisión de los datos, sino que también juega un papel importante en muchos problemas prácticos. Comprender los tipos de clasificación y los indicadores de evaluación de los modelos de clasificación, y dominar las técnicas y métodos de optimización.
Para la cosecha de trabajos grandes, lo más importante son los detalles.Por ejemplo, para la deduplicación de datos durante el preprocesamiento, se debe usar drop en lugar de list u otros, porque solo drop no cambiará la estructura de la matriz. La segunda es sobre la parte de clasificación, antes de la predicción, se debe dibujar un mapa de calor para verificar la correlación de cada característica para una comprensión intuitiva.

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_48676558/article/details/130841193
Recomendado
Clasificación