国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)預(yù)處理方法整理(數(shù)學(xué)建模)

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)預(yù)處理方法整理(數(shù)學(xué)建模)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

這篇文章主要是整理了一些作者在各種建模比賽中遇到的數(shù)據(jù)預(yù)處理問(wèn)題以及方法,主要針對(duì)excel或csv格式的數(shù)據(jù),為后續(xù)進(jìn)行機(jī)器學(xué)習(xí)或深度學(xué)習(xí)做前期準(zhǔn)備

數(shù)據(jù)清洗

導(dǎo)入庫(kù)和文件,這里使用的是絕對(duì)路徑,可改為相對(duì)路徑

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt



# 讀取xls數(shù)據(jù)文件
data = pd.read_csv(r'D:\1112222.csv',encoding='gbk')

傳入的為csv格式的文件,如果是xlsx格式的文件,建議先使用excel另存為csv結(jié)尾格式的文件再進(jìn)行操作,選擇下圖所示選項(xiàng):

csv數(shù)據(jù)建模,python,數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),cnn

合并多個(gè)文件數(shù)據(jù)

可能同時(shí)存在多個(gè)csv文件,需要進(jìn)行合并

import glob,os

filenames_in = r'D:\in'  # 輸入文件的文件地址
filenames_out = r'D:\inner'  # 新文件的地址
path_in  = r'D:\in'
file_names = os.listdir(path_in)
file_paths = glob.glob(os.path.join(path_in,'*.csv'))
print(file_paths)
 
df1 = pd.DataFrame()
for file in file_paths:
    df2 = pd.read_csv(file,sep=',',header=None)
    #df2=df2.iloc[:,2]  #只取第三列
    df1 = pd.concat([df1, df2], axis=0)      #axis=0意思是縱向拼接,=1的時(shí)候是橫向拼接
print('dataframe的維度是:', df1.shape)
#print(df1)

# 輸出數(shù)據(jù)到本地
df1.to_csv(r'D:\inner\result.csv', index=False, sep=',')

填補(bǔ)缺失值

對(duì)于數(shù)字類型的數(shù)據(jù),用均值填補(bǔ)空值;對(duì)于字符類型的數(shù)據(jù),用眾數(shù)填補(bǔ)空值

def fill_missing_values(df):
    """用DataFrame中各列的均值或眾數(shù)來(lái)填補(bǔ)空值"""
    for column in df:
        if df[column].dtype == np.number:  # 如果數(shù)據(jù)是數(shù)字類型
            mean = df[column].mean()
            df[column].fillna(mean, inplace=True)  # 用均值填補(bǔ)空值
        else:  # 如果數(shù)據(jù)不是數(shù)字類型
            mode = df[column].mode().iloc[0]  # 找到最頻繁出現(xiàn)的項(xiàng)
            df[column].fillna(mode, inplace=True)  # 用眾數(shù)填補(bǔ)空值

    return df
data=fill_missing_values(data)

去除數(shù)據(jù)中的符號(hào)

對(duì)于有些數(shù)據(jù),可能含有空格、中英文標(biāo)點(diǎn),需要進(jìn)行去除

import string
from zhon.hanzi import punctuation

punctuation_string = string.punctuation
for i in punctuation_string:
    data= data.replace(i, '')
punctuation_str = punctuation
for i in punctuation_str:
    data = data.replace(i, '')

當(dāng)然,如果遇到這種數(shù)據(jù),我會(huì)更建議使用excel自帶的功能進(jìn)行手動(dòng)去除,比調(diào)代碼更快(畢竟有時(shí)候可能調(diào)代碼半天手動(dòng)早就做好了)

如圖,c列是一列數(shù)據(jù)前面有空格的數(shù)據(jù),這時(shí)我們只需要在c列后插入新的一列,并在第一行中輸入c列無(wú)空格的數(shù)據(jù)

csv數(shù)據(jù)建模,python,數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),cnn

輸入好后,直接快捷鍵CTRL+E,即可自動(dòng)將D列填充為去除空格后的數(shù)據(jù)(注意要確保此時(shí)其他數(shù)據(jù)沒(méi)有別的空缺,否則會(huì)把別的空缺也自動(dòng)填充上)

csv數(shù)據(jù)建模,python,數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),cnn

?四萬(wàn)個(gè)數(shù)據(jù)不到一秒就全部填充好了,速度還是比較快的。然后直接把c列刪除即可。

如果是數(shù)據(jù)中包含特殊字符,想去除也可以用這個(gè)方法,只是對(duì)某幾列做操作時(shí),比調(diào)代碼快。

去除冗余數(shù)據(jù)

有些數(shù)據(jù),可能一整列都是同一個(gè)數(shù)據(jù),沒(méi)有變化,這些變量對(duì)機(jī)器學(xué)習(xí)沒(méi)有幫助,但因?yàn)閿?shù)據(jù)太多,不可能人工判斷每列數(shù)據(jù)情況,需要代碼調(diào)試進(jìn)行去除

for col in data.columns:
    # 如果這一列所有的值都相等
    if data[col].nunique() == 1:
        # 則刪除這一列
        data = data.drop(col, axis=1)

格式轉(zhuǎn)換

將true和false類型數(shù)據(jù)轉(zhuǎn)換為int型

data['11'] = data['11'].astype(int)

其他類型同理,將“int”改為想轉(zhuǎn)換的類型即可

字母或字符串轉(zhuǎn)換為對(duì)應(yīng)數(shù)字

如果想將字母或字符串轉(zhuǎn)換為數(shù)字在后續(xù)作為變量進(jìn)行處理,建議直接在excel中快捷鍵CTRL+h進(jìn)行轉(zhuǎn)換,代碼總是會(huì)出現(xiàn)各種錯(cuò)誤。

合并某幾列數(shù)據(jù)

如果給出的數(shù)據(jù)有年、月、日,需要將其合并成一列

data['timestamp'] = data['月'].astype(str) + '-' + data['日'].astype(str) + '-' + data['具體時(shí)間']
data = data.drop(['月', '日', '具體時(shí)間'], axis=1)

# 將時(shí)間戳列設(shè)置為索引
#data.set_index('timestamp', inplace=True)

data['time'] = pd.to_datetime('2023-' + data['timestamp'], format='%Y-%m-%d-%H:%M:%S')

對(duì)多列數(shù)據(jù)求平均值并合并為一列:

class_df = (data['ROLL_ATT1']+data['ROLL_ATT2'])/2
data['ROLL_ATT1']=class_df
data = data.drop(['ROLL_ATT2','MAGNETIC_HEADING'], axis=1)

數(shù)據(jù)可視化

可以將已處理好的數(shù)據(jù)進(jìn)行可視化

以某個(gè)自變量為橫坐標(biāo)(如時(shí)間),其余為縱坐標(biāo)畫出折線圖,畫出所有變量隨時(shí)間變化的折線圖:

import matplotlib.pyplot as plt
#畫出所有變量隨時(shí)間變化圖像
feature = data.columns[1:]
for feas in feature:
    plt.plot(data['time'], data[feas])
    plt.xlabel('Time')
    plt.ylabel(feas)
    plt.show()

判斷某個(gè)變量的分布情況可以繪制分布圖

# 繪制分布圖
plt.hist(df2['train1'], bins=20)
plt.xlabel('train1')
plt.ylabel('Frequency')
plt.title('Takeoff Weight Distribution')
plt.show()

?散點(diǎn)圖繪制

import seaborn as sns
sns.pairplot(data , hue ='label')
plt.savefig(r"D:\pairplot001.png")

效果如下:

csv數(shù)據(jù)建模,python,數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),cnn

也可以畫出相關(guān)性系數(shù)熱力圖

import seaborn as sns
sns.set(style="ticks")

sns.heatmap(data.corr(), annot=True, cmap="YlGnBu");
plt.savefig(r"D:\heatmap.png")

效果如下:

?csv數(shù)據(jù)建模,python,數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),cnn

?針對(duì)機(jī)器學(xué)習(xí)及深度學(xué)習(xí)數(shù)據(jù)預(yù)處理

導(dǎo)入庫(kù)(keras庫(kù)的內(nèi)容是深度學(xué)習(xí)才需要用到的,僅進(jìn)行機(jī)器學(xué)習(xí)可以不導(dǎo)入)

import numpy as np
import pandas as pd
import keras
from keras.models import Sequential
from keras.wrappers.scikit_learn import KerasClassifier
from keras.utils import np_utils, plot_model
import matplotlib.pyplot as pl
from sklearn import metrics
from sklearn.model_selection import cross_val_score, train_test_split, KFold
from sklearn.preprocessing import LabelEncoder
from keras.layers import Dense, Dropout, Flatten, Conv1D, MaxPooling1D
from keras.models import model_from_json
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import seaborn as sns
import os
from sklearn.preprocessing import StandardScaler
import itertools

首先是對(duì)數(shù)據(jù)集進(jìn)行劃分

data2=data.drop(['label'],axis=1)

X = np.expand_dims(data2.astype(float), axis=2)
Y = data['label']

print(X.shape)
print(Y.shape)

x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.7, random_state=20)
x_valid, x_test, y_test, y_valid=train_test_split(X, Y, test_size=0.5, random_state=20)

數(shù)據(jù)標(biāo)準(zhǔn)化

standard = StandardScaler()

# 對(duì)訓(xùn)練集進(jìn)行標(biāo)準(zhǔn)化,它會(huì)計(jì)算訓(xùn)練集的均值和標(biāo)準(zhǔn)差保存起來(lái)
x_train = standard.fit_transform(x_train)

# 使用標(biāo)準(zhǔn)化器在訓(xùn)練集上的均值和標(biāo)準(zhǔn)差,對(duì)測(cè)試集進(jìn)行歸一化
x_test = standard.transform(x_test)

接下來(lái)都是深度學(xué)習(xí)需要進(jìn)行的預(yù)處理操作,機(jī)器學(xué)習(xí)不用

深度學(xué)習(xí)需要對(duì)label進(jìn)行onehot編碼

from keras.utils import to_categorical
y_test = to_categorical(y_test)
y_train = to_categorical(y_train)

from keras import backend as K
K.set_image_dim_ordering("tf")
#one_hot編碼轉(zhuǎn)換
def one_hot(Train_Y, Test_Y):
    Train_Y = np.array(Train_Y).reshape([-1, 1])
    Test_Y = np.array(Test_Y).reshape([-1, 1])
    Encoder = preprocessing.OneHotEncoder()
    Encoder.fit(Train_Y)
    Train_Y = Encoder.transform(Train_Y).toarray()
    Test_Y = Encoder.transform(Test_Y).toarray()
    Train_Y = np.asarray(Train_Y, dtype=np.int32)
    Test_Y = np.asarray(Test_Y, dtype=np.int32)
    return Train_Y, Test_Y

y_train, y_test = one_hot(y_train, y_test)

接下來(lái)需要根據(jù)訓(xùn)練參數(shù)進(jìn)行調(diào)整,假設(shè)訓(xùn)練參數(shù)設(shè)置如下

# 訓(xùn)練參數(shù)
batch_size = 128
epochs = 40 #訓(xùn)練輪數(shù)
num_classes = 6 #總共的訓(xùn)練類數(shù)
length = 2048
BatchNorm = False # 是否批量歸一化
number = 1000 # 每類樣本的數(shù)量
normal = False # 是否標(biāo)準(zhǔn)化

?重塑訓(xùn)練參數(shù),否則傳入模型時(shí)會(huì)出錯(cuò)

x_train=x_train.reshape((x_train.shape[0],x_train.shape[1],1))
x_test = x_test.reshape((x_test.shape[0], x_test.shape[1],1))

需要根據(jù)betch_size的大小改變選擇的訓(xùn)練數(shù)據(jù)數(shù)目,否則傳入模型訓(xùn)練會(huì)出錯(cuò)

# # 改變dataset的大小,變成batch_size的倍數(shù)
def change_dataset_size(x, y, batch_size):
    length = len(x)
    if (length % batch_size != 0):
        remainder = length % batch_size
        x = x[:(length - remainder)]
        y = y[:(length - remainder)]
    return x, y

x_train,y_train=change_dataset_size(x_train,y_train,batch_size)

x_valid, y_valid=change_dataset_size(x_valid, y_valid,batch_size)

這一步之后基本就可以直接傳入模型進(jìn)行訓(xùn)練了?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-624193.html

到了這里,關(guān)于數(shù)據(jù)預(yù)處理方法整理(數(shù)學(xué)建模)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)學(xué)建?!繑?shù)據(jù)預(yù)處理

    【數(shù)學(xué)建?!繑?shù)據(jù)預(yù)處理

    數(shù)學(xué)建模是將實(shí)際問(wèn)題轉(zhuǎn)化為數(shù)學(xué)模型來(lái)解決的過(guò)程,而數(shù)據(jù)預(yù)處理是數(shù)學(xué)建模中非常重要的一步。以下是為什么要進(jìn)行數(shù)據(jù)預(yù)處理的幾個(gè)原因: 數(shù)據(jù)質(zhì)量:原始數(shù)據(jù)往往存在噪聲、異常值、缺失值等問(wèn)題,這些問(wèn)題會(huì)對(duì)建模結(jié)果產(chǎn)生負(fù)面影響。通過(guò)數(shù)據(jù)預(yù)處理,可以去除噪

    2024年02月09日
    瀏覽(26)
  • 數(shù)學(xué)建模:數(shù)據(jù)的預(yù)處理

    數(shù)學(xué)建模:數(shù)據(jù)的預(yù)處理

    ?? 文章首發(fā)于我的個(gè)人博客:歡迎大佬們來(lái)逛逛 常見(jiàn)的數(shù)據(jù)變換的方式:通過(guò)某些簡(jiǎn)單的函數(shù)進(jìn)行數(shù)據(jù)變換。 x ′ = x 2 x ′ = x x ′ = log ? ( x ) ? f ( x k ) = f ( x k + 1 ) ? f ( x k ) begin{aligned}x^{prime}=x^2 \\\\begin{aligned}x^{prime}=sqrt{x}end{aligned} \\\\x\\\'=log(x) \\\\nabla fleft(x_{k})right.=f

    2024年02月11日
    瀏覽(16)
  • 2023高教社數(shù)學(xué)建模國(guó)賽C題 - 蔬菜類商品的自動(dòng)定價(jià)與補(bǔ)貨決策(數(shù)據(jù)預(yù)處理部分)附詳細(xì)代碼

    2023高教社數(shù)學(xué)建模國(guó)賽C題 - 蔬菜類商品的自動(dòng)定價(jià)與補(bǔ)貨決策(數(shù)據(jù)預(yù)處理部分)附詳細(xì)代碼

    C題用到了vlookup函數(shù)將所有數(shù)據(jù)同類項(xiàng)進(jìn)行合并,公式如下: 單品類:=VLOOKUP(C2,[附件1.xlsx]Sheet1!A$2:D$252,2,FALSE) 大類:?=VLOOKUP(C2,[附件1.xlsx]Sheet1!A$2:D$252,4,FALSE) 批發(fā)價(jià)格:?=VLOOKUP(C2,[附件3.xlsx]Sheet1!B$2:C$55983,2,FALSE) 單品損耗率:?=VLOOKUP(H2,[附件4.xlsx]Sheet1!B$2:CS252,2,FALSE) 價(jià)格=單位成本

    2024年02月08日
    瀏覽(26)
  • transforms數(shù)據(jù)預(yù)處理方法(一)

    transforms數(shù)據(jù)預(yù)處理方法(一)

    1.transforms——裁剪 (1) transforms.CenterCrop(size) 功能: 從圖像中心裁剪圖片 size:所需裁剪圖片尺寸 (2) transforms.RandomCrop (size, padding= None , pad_if_needed= False ,fill= 0 , padding_mode= ‘constant’) 功能: 從圖片中隨機(jī)裁剪出尺寸為size的圖片 size:所需裁剪圖片尺寸 padding:設(shè)置填充大小

    2024年02月02日
    瀏覽(19)
  • 數(shù)據(jù)預(yù)處理的方法有哪些?

    數(shù)據(jù)預(yù)處理的方法有哪些?

    數(shù)據(jù)處理的工作時(shí)間占據(jù)了整個(gè)數(shù)據(jù)分析項(xiàng)目的70%以上。因此,數(shù)據(jù)的質(zhì)量直接決定了分析模型的準(zhǔn)確性。那么,數(shù)據(jù)預(yù)處理的方法有哪些呢?比如數(shù)據(jù)清洗、數(shù)據(jù)集成、數(shù)據(jù)規(guī)約、數(shù)據(jù)變換等,其中最常用到的是數(shù)據(jù)清洗與數(shù)據(jù)集成,下面小編將來(lái)詳細(xì)介紹一下這2種方法。

    2024年02月02日
    瀏覽(22)
  • 數(shù)據(jù)挖掘?qū)W習(xí)——數(shù)據(jù)預(yù)處理方法代碼匯總(python)

    數(shù)據(jù)挖掘?qū)W習(xí)——數(shù)據(jù)預(yù)處理方法代碼匯總(python)

    目錄 一、歸一化處理方法 (1)min-max方法(離散歸一化) (2)零-均值規(guī)范化方法 (3)小數(shù)定標(biāo)規(guī)范化 二、插值法 (1)拉格朗日插值法 三、相關(guān)性分析 (1)pearson相關(guān)性系數(shù) (2)spearman相關(guān)性系數(shù) 四、主成分分析(PCA) 歸一化常用方法有: (1)min-max方法(離散歸一化

    2024年02月08日
    瀏覽(99)
  • Spark中數(shù)據(jù)預(yù)處理和清洗的方法(python)

    在Spark中進(jìn)行數(shù)據(jù)分析,數(shù)據(jù)預(yù)處理和清洗是必不可少的步驟,以下是一些常用的方法: 去除重復(fù)行 去除空值 替換空值 更改數(shù)據(jù)類型 分割列 合并列 過(guò)濾行 去除重復(fù)行可以使用DataFrame的 dropDuplicates() 方法,例如: 去除空值可以使用DataFrame的 dropna() 方法,例如: 可以通過(guò)指

    2024年02月11日
    瀏覽(44)
  • AI人工智能預(yù)處理數(shù)據(jù)的方法和技術(shù)有哪些?

    AI人工智能預(yù)處理數(shù)據(jù)的方法和技術(shù)有哪些?

    在人工智能(Artificial Intelligence,簡(jiǎn)稱AI)領(lǐng)域中,數(shù)據(jù)預(yù)處理是非常重要的一環(huán)。它是在將數(shù)據(jù)輸入到模型之前對(duì)數(shù)據(jù)進(jìn)行處理和清洗的過(guò)程。數(shù)據(jù)預(yù)處理可以提高模型的準(zhǔn)確性、可靠性和可解釋性。 本文將詳細(xì)介紹AI人工智能預(yù)處理數(shù)據(jù)的方法和技術(shù)。 數(shù)據(jù)清洗是數(shù)據(jù)預(yù)

    2024年02月14日
    瀏覽(93)
  • 【Python】數(shù)據(jù)預(yù)處理之將類別數(shù)據(jù)轉(zhuǎn)換為數(shù)值的方法(含Python代碼分析)

    在進(jìn)行Python數(shù)據(jù)分析的時(shí)候,首先要進(jìn)行數(shù)據(jù)預(yù)處理。但是有時(shí)候不得不處理一些非數(shù)值類別的數(shù)據(jù),遇到這類問(wèn)題時(shí)該怎么解決呢? 目前為止,總結(jié)了三種方法,這里分享給大家。 這種方法是屬于映射字典將類標(biāo)轉(zhuǎn)換為整數(shù),不過(guò)這種方法適用范圍有限。 我們首先創(chuàng)建一

    2024年02月09日
    瀏覽(26)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包