亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

python 可以規范化對象數組嗎?

python 可以規范化對象數組嗎?

明月笑刀無情 2023-10-11 21:30:17
我正在用 python 做機器學習課的作業。我昨天才開始學習Python,所以我不知道Python中使用的實踐。我的部分任務是從 csv(二維數組)加載數據,讓我們調用它arr_2d并對其進行標準化。我在網上找到了sklearn解決numpy方案,但他們期望二維數組作為輸入。加載后我的方法arr_2d是將它們解析為對象數組(data: [HealthRecord])。我的解決方案是類似于此的代碼(注意:有點偽代碼)result = [] # 2D array of property valuesfor key in ['age','height','weight',...]:    tmp = list(map(lambda item: getattr(key, item), data))    result.append(tmp)結果現在包含3 * data.length項目,我將使用它sklearn來規范化數組中的單行result,然后將其旋轉回來并解析規范化為HealthRecord.我認為這過于復雜,我希望看到一個選項可以以更簡單的方式做到這一點,例如發送[HealthRecord]到sklearn.normalize下面的代碼顯示了我的(簡化的)加載和解析:class Person:     age: int    height: int    weight: int    def arr_2_obj(data: [[]]) -> Person:    person = Person()    person.age = data[0]    person.height = data[1]    person.weight = data[2]    return person# age (days), height (cm), weight (kg)input = [    [60*365, 125, 65],    [30*365, 195, 125],    [13*365, 116, 53],    [16*365, 164, 84],    [12*365, 125, 96],    [10*365, 90, 46],    ]parsed = []for row in input:    parsed.append(arr_2_obj(row))  注意:Person類是HealthRecord感謝您提供任何意見或見解。編輯:拼寫錯誤 sci-learn -> sklearn
查看完整描述

1 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

你不能。實際上,您正在處理表格數據。python 中用于處理表格數據的標準(如最流行的非標準庫)包是pandas,因此您可以執行以下操作:


import pandas as pd

df = pd.DataFrame([d.__dict__ for d in data])

normalized_df = (df-df.mean())/df.std() # example normalization 

如果您堅持處理對象數組而不是表,您可以編寫一個類來執行所需的轉換以縮短符號,例如類似


class ObjectList: 

    def __init__(self, object_type, records): 

        self.objects = [object_type(**record) for record in records]


    def to_data_frame(self): 

        return pd.DataFrame([d.__dict__ for d in self.objects])


class PersonList(ObjectList): 

    def __init__(self, records): 

        super().__init__(Person, records)


上面假設class Person有一個接受參數, ,__init__的函數。heightageweight


您還可以嘗試通過重載運算符來進一步縮短符號,但除非您正在編寫庫代碼,否則我不明白您為什么要這樣做。


查看完整回答
反對 回復 2023-10-11
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號