La codificación del conjunto de datos de índice presenta un error de tipo, ¿por qué? [Aprendizaje automático]
Conjunto de datos: https://docs.google.com/spreadsheets/d/1OBdyMv8yU7EEdlUNqk_Ox9gT2LMItY2DivEiVX4fYWY/edit?usp=sharing
Estoy intentando aplicar aprendizaje automático a las estadísticas en el conjunto de datos, sin embargo, cada vez que intento codificar/preprocesar los datos, recibo el siguiente error:
TypeError: El índice no admite operaciones mutables
¿No es el objetivo del preprocesamiento cambiar los valores? ¿Y no es eso un precursor necesario para aplicar el aprendizaje automático? No sé cómo abordar la codificación/preprocesamiento… cualquier sugerencia es apreciada. ¡Gracias!
Código:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import datetime as dt</p>
<p>from sklearn import datasets, metrics
from sklearn.model<em>selection import train</em>test<em>split
from sklearn.preprocessing import StandardScaler
from sklearn.preprocessing import OneHotEncoder, LabelEncoder
from sklearn.preprocessing import OrdinalEncoder
from sklearn.impute import SimpleImputer
from sklearn.linear</em>model import LogisticRegression
from sklearn.model<em>selection import cross</em>val_score</p>
<p>dbdata = pd.read<em>excel("C:/Users/Andrew/sportsref</em>download.xlsx")</p>
<p>print(dbdata)
print(dbdata.describe())
df = dbdata.columns
print(df)</p>
<h1>definir x&y</h1>
<p>x = dbdata
y = dbdata.PTS</p>
<p>shapes = x.shape, y.shape
print(shapes)</p>
<p>print(dbdata.index)
print('siguiente')</p>
<h1>aplicar logreg</h1>
<p>logreg = LogisticRegression(solver='lbfgs')</p>
<p>cross<em>val</em>score(logreg, x, y, cv=2, scoring='accuracy').mean()
print(cross<em>val</em>score)</p>
<p>le = LabelEncoder()
df["date<em>tf"] = le.fit</em>transform(dbdata.Date)
df["tm<em>tf"] = le.fit</em>transform(df.Tm)
df["opp<em>tf"] = le.fit</em>transform(df.Opp)</p>
<p>OneHotEncoder().fit<em>transform(df[['date</em>tf']]).toarray()</p>
<p>Cols = ["Date","Tm","Opp"]
integer<em>encoded = OrdinalEncoder().fit</em>transform(x[Cols])</p>
<p>scaler = StandardScaler()
X<em>scaled = scaler.fit</em>transform(x)
print(X_scaled)</p>
<p>ec = OneHotEncoder()
X<em>encoded = dbdata.apply(lambda col: ec.fit</em>transform(col.astype(str)), axis=0, result<em>type='expand')
X</em>encoded = ec.fit_transform(x.values.reshape(-1,1), y)</p>
<p>print(X<em>encoded)
X</em>encoded = ec.fit_transform(x)
davy.ai
Parece que estás intentando modificar el índice del conjunto de datos, lo cual no está permitido ya que es inmutable. La etapa de preprocesamiento implica cambiar los valores del conjunto de datos, no el índice.
Para codificar/preprocesar los datos, puedes utilizar métodos como LabelEncoder, OneHotEncoder, OrdinalEncoder y SimpleImputer. Estos métodos te ayudarán a transformar los datos categóricos y faltantes en datos numéricos que se pueden ingresar en un modelo de aprendizaje automático.
Por ejemplo, puedes utilizar LabelEncoder para convertir datos categóricos en datos numéricos, OrdinalEncoder para transformar los datos ordinales y OneHotEncoder para crear variables ficticias para los datos categóricos. También puedes utilizar SimpleImputer para manejar los datos faltantes en el conjunto de datos.
A continuación se muestra un ejemplo de cómo aplicar el preprocesamiento utilizando LabelEncoder, OneHotEncoder y StandardScaler:
En resumen, el error que recibiste se debe a que estás tratando de modificar el índice, lo cual no está permitido. Para preprocesar el conjunto de datos, puedes utilizar métodos como LabelEncoder, OneHotEncoder, OrdinalEncoder, SimpleImputer, etc., los cuales te ayudarán a transformar los datos de manera que se puedan ingresar en un modelo de aprendizaje automático.