我有一系列具有各種屬性的服裝/配件產品(用Python對象表示)。這些產品是通過查詢外部API和刮取商家網站以獲得各種屬性的組合而產生的。複雜對象的Python決策樹分類
我的目標是開發一個使用這些屬性對產品進行正確分類的分類器(即分類爲褲子,T恤,連衣裙等)。
我有一個訓練和一個測試數據集,它們是整個數據集的一個子集,隨機選擇的數據集已被人工分類。
我和一位專門從事機器學習的大學前同事交談過,他建議使用決策樹。但是,Python中的決策樹庫看起來非常注重數值(而不是專注於基於文本屬性對數據進行分類)。
我知道像Scikit Learn這樣的庫,但從我的簡要分析看來,它們通常涉及比我所需的規則更簡單的邏輯。
任何關於方法,庫,代碼結構等的建議將不勝感激。然而,這個問題的主要焦點是,其中Python機器學習庫(如果有的話)將最適合於此任務。
產品屬性包括以下內容:
- 名稱(
str
) - 描述(
str
) - available_sizes(
[str, str...]
) - available_colours([STR,STR ...])
- 價格(
float
) - url(
str
) - CATEGORY_NAME(
str
) - 圖像(
[str, str...]
- 網址)
產品的一個例子:
{ 'category': u"Men's Accessories",
'colours': [u'White'],
'description': u'Keep your formal style looking classic with this white short sleeve Oxford shirt with roll up sleeve detailing.',
'ean': u'',
'gender': u'M',
'images': [ u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_large.jpg',
u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_2_large.jpg',
u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_3_large.jpg',
u'http://media.topman.com/wcsstore/TopMan/images/catalog/83D21DWHT_4_large.jpg'],
'last_scraped': datetime.datetime(2014, 11, 1, 7, 13, 28, 943000),
'merchant_id': 2479L,
'merchant_uri': u'http://www.topman.com/en/tmuk/product/white-oxford-short-sleeve-shirt-157702?geoip=noredirect',
'name': u'White Oxford Short Sleeve Shirt',
'price': 26.0,
'sizes': [u'XXS', u'XS', u'S', u'M', u'L', u'XL', u'XXL']}
不確定我完全理解您的目標,但OpenCV有一些機器學習分類器:請參見http://www.cs.haifa.ac.il/~dkeren/ip/OReilly-LearningOpenCV.pdf中的第13部分。 ,請參閱第486頁關於二元決策樹的章節;有毒的蘑菇例如可能是一個有用的模型。這些egs使用C語言,但是代碼可以很容易地修改爲在python中運行 – Ryan 2014-11-03 10:37:27
您能簡要解釋一下您想用該分類器實現的目標嗎?它是否在用戶輸入的類別和數據庫中的實際產品之間找到映射? – tttthomasssss 2014-11-03 10:53:06
@tttthomasssss我的產品數據來自外部API,由其他系統的用戶手動輸入。分類的質量令人震驚,所以我需要開發一個系統,根據產品屬性將產品分配到正確的內部類別。 – Prydie 2014-11-03 11:54:44