Я думаю, что это довольно много! Используйте кодировщики меток или горячее кодирование для преобразования нечисловых значений в числовые.
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder# creating initial dataframe
bridge_types = ('Arch','Beam','Truss','Cantilever','Tied Arch','Suspension','Cable')
bridge_df = pd.DataFrame(bridge_types, columns=['Bridge_Types'])# creating instance of labelencoder
labelencoder = LabelEncoder()# Assigning numerical values and storing in another column
bridge_df['Bridge_Types_Cat'] = labelencoder.fit_transform(bridge_df['Bridge_Types'])
bridge_df
Результат:
Bridge_Types Bridge_Types_Cat
0 Arch 0
1 Beam 1
2 Truss 6
3 Cantilever 3
4 Tied Arch 5
5 Suspension 4
6 Cable 2
Или ...
import pandas as pd
import numpy as np# creating initial dataframe
bridge_types = ('Arch','Beam','Truss','Cantilever','Tied Arch','Suspension','Cable')
bridge_df = pd.DataFrame(bridge_types, columns=['Bridge_Types'])# generate binary values using get_dummies
dum_df = pd.get_dummies(bridge_df, columns=["Bridge_Types"], prefix=["Type_is"] )# merge with main df bridge_df on key values
bridge_df = bridge_df.join(dum_df)
bridge_df
Имейте в виду, что если у вас много ярлыков, ваши данные будет довольно редким после того, как вы все сделаете цифру c. Кроме того, да, вы можете «поиграть», удваивая функцию. Вот базовый c пример.
import numpy as np
data = np.asarray([np.asarray(DF['Feature1']),np.asarray(DF['Feature1']),np.asarray(DF['Feature2'])])
Это кажется немного странным, и я никогда не делал этого на практике, но он должен дать вам желаемые результаты. Вы знаете, что ... проверить это и посмотреть, как вы ладите. Наконец, когда у вас будет немного свободного времени, прочитайте материал по ссылке ниже. По этой ссылке вы многому научитесь.
https://scikit-learn.org/stable/modules/clustering.html