Conceptos básicos del aprendizaje automático "Algoritmo de clasificación (4): caso: predicción de la ubicación de registro de Facebook"

1. Antecedentes

1. Descripción

2. Conjunto de datos
row_id: codificación del comportamiento de registro
xy: sistema de coordenadas, ubicación de la persona
precisión: precisión de posicionamiento
hora: marca de tiempo
place_id: predicción de la ubicación donde el usuario realizará el registro

3. La descarga del conjunto de datos
https://www.kaggle.com/navoshta/grid-knn/data
no se puede descargar en China y no se puede recibir el código de verificación. Es mejor usar puntos en csdn para descargar el que se cargó. por otros.

2. Análisis de procesos

1. Obtener datos

2. Procesamiento de datos
Propósito:     Valor
    de característica Valor       objetivo       a       <     2       el rango según las coordenadas       Reducir     . Reducir el rango de datos.       el sábado, tal vez en el centro comercial o durmiendo en casa     c. Filtrar ubicaciones con pocos controles -ins     d.División del conjunto de datos










3.
Estandarización de la ingeniería de funciones

4. Proceso predictor del algoritmo KNN

5. Selección y ajuste del modelo.

6. Evaluación del modelo

3. Código

1、day02_facebook_demo

import pandas as pd

# 1、获取数据
data = pd.read_csv("./FBlocation/train.csv")

data.head()

# 2、基本的数据处理
# 1)缩小数据范围
data = data.query("x < 2.5 & x > 2 & y < 1.5 & y > 1")

data

# 2)处理时间特征
time_value = pd.to_datetime(data["time"], unit="s")

time_value.values

date = pd.DatetimeIndex(time_value)

data["day"] = date.day

data["weekday"] = date.weekday

data["hour"] = date.hour

data

# 3、过滤掉签到次数少的地点
place_count = data.groupby("place_id").count()["row_id"]

place_count[place_count > 3].head()

data_final = data[data["place_id"].isin(place_count[place_count > 3].index.values)]

data_final.head()

# 筛选特征值和目标值
# 特征值
x = data_final[["x", "y", "accuracy", "day", "weekday", "hour"]]
# 目标值
y = data_final["place_id"]

x.head()

y.head()

# 数据集划分
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y)

from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import GridSearchCV

# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
# 用训练集的平均值和标准差对测试集的数据来标准化
# 这里测试集和训练集要有一样的平均值和标准差,而fit的工作就是计算平均值和标准差,所以train的那一步用fit计算过了,到了test这就不需要再算一遍自己的了,直接用train的就可以
x_test = transfer.transform(x_test)
# 4、KNN算法预估器
estimator = KNeighborsClassifier()
# 加入网格搜索和交叉验证
# 参数准备
param_dict = {"n_neighbors": [1, 3, 5, 7, 9, 11]}
estimator = GridSearchCV(estimator, param_grid=param_dict, cv=10)
estimator.fit(x_train, y_train)
# 5、模型评估
# 方法1:直接比对真实值和预测值
y_predict = estimator.predict(x_test)
print("y_predict:\n", y_predict)
print("直接比对真实值和预测值:\n", y_test == y_predict)
# 方法2:计算准确率
score = estimator.score(x_test, y_test)
print("准确率为:\n", score)
#最佳参数:best_params_
print("最佳参数:\n", estimator.best_params_)
#最佳结果:best_score_
print("最佳结果:\n", estimator.best_score_)
#最佳估计器:best_estimator_
print("最佳估计器:\n", estimator.best_estimator_)
#交叉验证结果:cv_results_
print("交叉验证结果:\n", estimator.cv_results_)

2. Resultados de la operación

Supongo que te gusta

Origin blog.csdn.net/csj50/article/details/132453196
Recomendado
Clasificación