В наборе данных, который я использую, есть несколько столбцов, которые являются категориями. Я применил OneHotEncoder для них. Затем я попытался объединить массив числовых c объектов и массив, являющийся результатом OneHotEncoder, таким образом сформировав единый массив со всеми функциями!
Первый массив - (5074382, 82)
, а второй - (5074382, 9276434)
Я пытался:
features_final = np.column_stack((features2, features_encoded))
features_final
будет использоваться вместо features
features_encoded
(5074382, 9276434) dtype('float64') scipy.sparse.csr.csr_matrix
features2
(5074382, 82) dtype('float64') numpy.ndarray
Код:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
pd.options.display.max_columns = None #Display all dataframe columns in a Jupyter Python Notebook
pd.set_option('display.max_rows', 1000)
get_ipython().run_line_magic('matplotlib', 'inline')
CIC2019 = pd.read_csv(r"DrDoS_DNS.csv")
remove =lambda x:x.strip()# remove the blancks in columns names
columns = list(CIC2019.columns)
new_columns =list(map(lambda x:x.strip(),columns))# removing blamcks
CIC2019 = pd.read_csv(r"CSV-01-12\DrDoS_DNS.csv", names =new_columns, header = None, skiprows=1,nrows=None)
CIC2019.rename(columns={"Unnamed: 0": "ID"}, inplace=True)
CIC2019 = CIC2019.dropna()
CIC2019.isna().sum()
features = CIC2019.drop("Label", axis =1)
# # Handling categorical attributes
from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
CIC2019["Label"]
Label_encoded = encoder.fit_transform(CIC2019["Label"].to_numpy().reshape(1,-1))
features[["Flow ID","Source IP","Timestamp","SimillarHTTP","Destination IP"]]
features2 = features.drop(["Flow ID","Source IP","Timestamp","Destination IP","SimillarHTTP"], axis =1)
features2 = features2.to_numpy()
features_encoded = encoder.fit_transform(features[["Flow ID","Source IP","Timestamp","Destination IP",]].to_numpy())
#"SimillarHTTP" : error when you added this
# # Training - Linear Regression
features_final = np.column_stack((features2, features_encoded))
Я получил ошибку:
ValueError: все размеры входного массива для оси конкатенации должны точно совпадать, но по измерению 0 массив с индексом 0 имеет размер 5074382, а массив с индексом 1 имеет размер 1
Что случилось? Как это исправить?