Соедините два numpy массива с одинаковыми строками: я получил ValueError - PullRequest
0 голосов
/ 24 апреля 2020

В наборе данных, который я использую, есть несколько столбцов, которые являются категориями. Я применил 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

Что случилось? Как это исправить?

...