三菱汽車五年內推出電動休旅車

搶攻電動車市場,三菱汽車(Mitsubishi Motors)宣布預計在2020年推出純電動休旅車,且將是全球戰略性車款。

報導指出,三菱的澳洲執行長Osamu Masuko透露了2020年發表純電動休旅車的計畫,但其他細節並未公開。市場猜測,這款車會類似Nissan Juke或Ford EcoSport,為中小型休旅車款,並搭配全時四輪驅動系統與自動駕駛系統。

而特斯拉的400公里續航力儼然成了新一代電動車產品的續航力標準。三菱的純電動休旅車續航力,具三菱汽車內部消息透露,也會超過400公里,可與特斯拉車款一較高下。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置,台北網頁設計,各種案例分享

底特律計畫 2019年推兩款全新純電動車型

底特律電動汽車是由位於底特律的Anderson電動汽車公司生產的一款純電動汽車品牌,底特律電動汽車品牌在2008年的時候正式回歸市場。  
  雖然旗下的SP:01車型還沒有真正的上市銷售,但是根據消息稱,該品牌的電動汽車已經計畫在2019年將推出兩款全新的純電動車型。有趣的是,與特斯拉一樣,它推出的首款進軍汽車市場的車型是一款純電動車型;另外,其SP:01也是在Lotus Elise車型的基礎上打造而來的純電動車型。但是底特律電動汽車卻極力與特斯拉劃清界限,聲稱他們並不是步特斯拉的後塵。   在其SP:01車型正式發佈之後,近日底特律電動汽車已經開始投入另外兩款全新的純電動車型的研發工作,一款為SUV車型;一款為轎車車型。但是,他們同特斯拉有著較大的區別。底特律電動汽車聲稱,在其新款電動車型推向市場的同時還將實現年產50000到60000的產量目標。   文章來源:鳳凰汽車

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

BMW iX3 正式登場,又一款台灣買不到的電動車

搭載第五代 eDrive 技術,續航突破 440 公里的 BMW iX3,今日正式登場,並宣布於明年起在中國、北美和歐洲開賣,台灣消費者幾乎肯定買不到,因為這款車將會在中國製造。

德國汽車大廠 BMW,去年介紹了 iX3 的概念車型後,就受到許多車迷期待,今天終於宣布要在 2020 年正式開賣,先來看看這輛車的規格與性能吧。

BMW iX3 搭載 74 kWh 的新版電池組,根據歐盟標準,滿電里程達到 440 公里,馬達能夠輸出 286 馬力,最大扭力為 400 牛頓米。極速達到每小時 200 公里,零到一百加速時間為 6 秒,能源效率部分,官方並未提供準確數據,只表示會低於 20 kW/100 km,由於 BMW i3 的能源效率約為 15 kW/100 km,因此保守估計 iX3 應該能有差不多的表現。

BMW i3 做為集團最初代的電動車,雖然銷售不算太好,但在品牌效應下,仍然有穩定的市場。iX3 的命名則非常有趣,因為它雖然是集團第二款純電車,但他並不是 i3 的後繼車款,而是新一代的 X3,被定義為首款純電動的 SAV(Sport Activity Vehicle)。

iX3 除了純電版本,還會推出同款的燃油版跟油電板,一車三吃。它所搭載的第五代 eDrive 是 BMW 為了下一個世代的電動車所開發的新動力系統,未來將會使用在 i4 跟 i-NEXT 身上。

無論 BMW 願不願意,iX3 的尺寸和價位都無法避免要跟 Tesla 的 SUV 相比,單純比較性能的話,iX3 跟 Model Y 比較接近,但特斯拉在各方面都小贏一些,價格如果沒意外的話,Model Y 應該會比 iX3 便宜不少,但是考慮到內裝和品牌效應,這兩台車應該會讓不少車主苦惱一番(官方售價尚未公布,推測落在 7 萬美元左右)。

不過台灣車主大概不需要苦惱,因為 ,除非法規鬆綁,否則台灣注定是買不到這台車了。台灣的 BMW 車友如果想要入手新款的 電動車,就要等 2021 年的 i4 了。

▲ 第五代 eDrive 動力元件是 BMW 邁入下一個時代的最重要核心技術。(Source:)

BMW 是少數不打算自行研發電池的傳統車廠,目前 i3 使用的是南韓三星的電池組,而 iX3 將會使用寧德時代的電池組。這家車廠將心力投注在他們的 eDrive 動力系統上,根據目前釋出的訊息來看,BMW 的新款馬達並沒有採用目前常見的永磁同步馬達,而是用他們研發的新系統,將馬達、差速器跟系統電子組件全部整合在一起,變成極為精簡的驅動元件,同時提供優秀的動力表現。

「第五代 eDrive 的驅動元件,重量出力比跟前代相較之下提升了 30%,」BMW 官方發言人表示,不僅效率提升,製作過程中也不再需要使用稀土,未來他們將會大量應用這款驅動元件在各種車型上。

此外,寧德時代提供給 BMW 的方形電池組,採用的是新技術 NMC-811 電池,鎳的比例更高,鈷和錳比例下降,除了成本更低,能量密度也更高。

iX3 另一個隱藏的對手是 Tesla Model Y,由於交車時間尚未明朗,許多車主還在觀望,如果 Model Y 在 2020 年第一季順計出貨,那 BMW iX3 可能會跟 i3 一樣,只能固守基本盤,無法吃下更多電動休旅車的市場。

(合作媒體:。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置,台北網頁設計,各種案例分享

電動車市場上軌道但電子大廠開始打退堂鼓,Sony 成為唯一逆向

電動車市場逐漸步上正軌,先前許多大動作要進入電動車領域,喊出或暗示要打造電動車的電子大廠卻開始打退堂鼓。在諸多電子大廠的退卻潮下,Sony 千山萬水我獨行,推出 Vision-S 電動概念車,是「人棄我取」的逆行觀念,還是只是「項莊舞劍,意在沛公」?

以蘋果(Apple)來說,先前曾經傳出「泰坦計畫」(Project Titan)要在 2019 年推出自家電動車,2019 年都過去了,卻無消無息,事實上蘋果在幾年前就改換電動車領域的發展方向,雖然蘋果仍不斷在電動車領域申請專利,但是專利大多集中在資訊娛樂系統,以及自動駕駛軟體,而非打造一輛完整的車。

英國吸塵器大廠戴森(Dyson),原本對電動車也有雄圖大略,2015 年購併固態電池新創事業 Sakti3 後,原本有 25 億英鎊的大計畫,包括 2018 年在新加坡建廠,以及打造電動車,到 2019 年 10 月,戴森打了退堂鼓,表示儘管研發極盡努力,卻無法打造出商業可獲利的車款。

蘋果與戴森的退卻,顯示一個基本問題,那就是即使電動車跳過最複雜的內燃機引擎部分,打造汽車仍是相當高技術門檻的事,並非藉由電子方面的專長就能打造電動車。要打造一輛能熬過日曬雨淋下雪,在路上經歷 15 年的車輛,是相當複雜且需要工程技術的任務,汽車大廠數十年來精研於此,就算排除內燃機引擎部分,仍非一朝一夕可超越。

Google 於 2016 年將自駕車部門獨立成為 Waymo,Waymo 也放棄自己打造自駕車,2019 年 Waymo 在亞利桑那州開始試營運自駕計程車,不過使用的是第三方車廠的車改造,克萊斯勒(Chrysler)Pacifica,以及捷豹(Jaguar)I-Pace,而非自行打造。

自動駕駛的軟硬體技術方面,科技大廠顯然仍興致高昂、摩拳擦掌,但要打造整輛車,這個主意從來都不現實。一開始科技大廠看到電動車能跳脫汽車業最困難尖端的內燃機引擎技術,替代為電子電機大廠熟悉的馬達與鋰電池,見獵心喜,認為這是打入長期由車廠壟斷的市場的良機,但很快就發現,汽車市場早已是割喉戰,要跳進去規模量產汽車,跟著割喉,並不是個好主意。

科技大廠打退堂鼓的根本原因,在於打造整輛車,毛利率遠低於軟體與消費性電子產品,這些原本位於高毛利產業的大廠,稍事研究後,就對進軍「茅山道士」(毛利 3%~4%)產業敬謝不敏,不如安於於當軟體技術與關鍵硬體供應商,因此蘋果樂於打造車用資訊娛樂系統軟體平台,而戴森樂於供應電池,但不想做整輛車。

此外,割喉戰還會越來越嚴重,原本只有特斯拉(Tesla)領頭開拓電動車市場,如今幾乎主要車廠都已經大力投入,而特斯拉本身也已經往平價車款發展,另一方面,中國廠商磨刀霍霍,想在中國低價電池廠的產能撐腰下積極投入,很快電動車市場就會如傳統汽車市場「割喉割到斷」,而且恐怕比過去更激烈。

中國本身 IT 巨頭,也採用投資的方式加入電動車市場,而非自身投入打造電動車,如騰訊投資和諧富騰、阿里巴巴投資小鵬汽車。連中國巨頭企業都迴避這個紅海戰場,那麼也就難怪歐美大廠從本來有興趣,改為退避三舍了。

千山萬水,Sony 獨行?

此股退卻潮中,唯一逆向而行的,大概只有日本電子大廠 Sony。2020 年 CES,Sony 宣布 Vision-S 概念電動車原型,車內車外內建 33 種不同感測器,車內資訊娛樂系統有好幾個寬螢幕顯示器、360 度環場音效、常時連線(always-on connectivity),其中部分技術來自音響大廠博世(Bosch),以及黑莓(BlackBerry)的行動無線通訊技術。此外,Sony 更打造全新設計的電動車平台,來自加拿大汽車零件供應大廠麥格納(Magna),不僅支援轎車也支援休旅車。

Vision-S 概念電動車相當有未來感,不過產業界對 Vision-S 最想知道的是:Sony 與麥格納,真的打算將這款車規模生產商業上市嗎?還是只是藉此展示車用平台及相關零組件、感測器、軟硬體技術?發表會當天,Sony 電動車發表時間並不長,且還強調 Sony 以影像感測器部門積極投資自動駕駛相關技術,包括強化原本的 CMOS,以及發展光雷達(LIDAR)、飛時測距鏡頭(Time-of-flight camera),以及複合多種感測器強化對環境的辨認能力。

就此看來, Sony 與麥格納仍是定位自身為平台與關鍵零組件供應商,Vision-S 概念電動車較可能只是為了展示所有想推銷給各大車廠的相關技術,而非真要把 Vision-S 掛上 Sony 品牌上市,否則,恐怕先要遭受全球車廠客戶抵制,得不償失。

無論如何,至少 Sony 還敢推出概念電動車原型,成為電子大廠進攻電動車市場的最後勇者,到底是「項莊舞劍,意在沛公」,最後跟其他電子大廠一樣只當車用平台零組件與軟硬體供應商,還是真會自己跳下去製造電動車,就看 Sony 有沒有豪賭的勇氣了。

(合作媒體:。首圖為Vision-S 電動概念車,來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

推動 FCV 普及!本田、五十鈴傳攜手研發燃料電池卡車

日經新聞 14 日,本田汽車(Honda)將和五十鈴(ISUZU)攜手研發使用氫氣作為燃料的燃料電池卡車,期望藉此推動燃料電池車(FCV)的普及腳步。

據報導,此將是本田首度將 FCV 技術提供給外部企業使用,而五十鈴計畫早期推出使用本田燃料電池系統的卡車車款。除五十鈴之外,本田今後也計畫將燃料電池系統販售給造船公司等外部企業。

FCV 是使用氫氣作為燃料進行行駛的車款,因不會排放二氧化碳,因此被視為「究極的環保車」,不過因供應燃料的氫氣站缺乏、導致 FCV 普及速度牛步,不過若是卡車等商用車的話、因有固定的行駛路徑因此更易於進行氫氣站的整備。

全球 FCV 普及腳步緩慢,根據英國調查公司 IHS Markit 指出,相較於 2018 年電動車市場規模約 140 萬台、FCV 僅約 4,000 台。

豐田於 2014 年 12 月開賣全球首款量產款 FCV「MIRAI」、本田也於 2016 年推出 FCV 車「Clarity」。

南韓媒體中央日報日文版 1 月 14 日報導,根據南韓產業通商資源部指出,2019 年 1-10 月期間全球 FCV 銷售量為 6,126 台,其中南韓現代汽車拿下高達 60%(3,666 台)的銷售市佔率,其次為豐田(2,174 台)和本田(286 台)。

豐田汽車會長內山田竹志於 2019 年 9 月 25 日在東京都內舉行的「氫氣部長級會議」上表示,關於燃料電池車(FCV)「MIRAI」的次代車款,「目前正進行最終研發、目標在 2020 年內開賣」。

日本媒體報導,由約 40 個國家/機關代表者出席、討論氫氣普及對策的「氫氣部長級會議」於 2019 年 9 月 25 日在東京都內舉行,而擔任議長的日本經濟產業大臣菅原一秀提案,將使用燃料電池的車輛、飛機等交通工具的普及數量在今後 10 年間擴增至 1,000 萬台訂為全球目標,而該提案獲得與會各國贊同。

另外,該會議上也同意,計畫在 10 年內將供應燃料的氫氣站數量自現行的數百座擴增至 1 萬座。

(本文內容由 授權使用。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置,台北網頁設計,各種案例分享

Elon Musk將建10 – 20座Gigafactory

在6月6日舉辦的股東會議上,Tesla創辦人Elon Musk提到將在全球建至少10座到20座超級電池工廠(Gigafactory)以供應市場需求。

過去,Elon Musk曾提到以全球對電動車和儲能電池的需要,需要100座Gigafactory來應付市場需求。外媒指出,Elon Musk這番發言也暗示Tesla未來將佔全球10%的儲能和電動車的產能。

Tesla於美國內華達州的Gigafactory 1目前仍持續建造並且已進行鋰電池生產,Elon Musk於股東會議中提到,當Gigafactory 1產能全開時,其生產的鋰電池數量將會比全球其餘鋰電池工廠生產的總和還要多。

與Panasonic的合作使Tesla在生產池上有極大的優勢,其最終目標是生產先進且低價的鋰電池,同時Tesla視Gigafactory為一個「巨型機器」,會不斷改善和優化。

至於目前未來規劃中的3、4座Gigafactory的廠址還未定案,日前Elon Musk表示,2017年底將宣布它們的落腳處。由於Tesla位於加州費利蒙的工廠生產線已滿載,因此其中一座未來的Gigafactory將會用來生產新型SUV Model Y,其生產線也會於其他Gigafactory不同。

(圖片來源:Tesla Club Belgium via Flickr CC2.0)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

歐洲可充電公路測試中,預計2018年上市

電動車邊最怕路上沒電,但如果能邊跑邊充電,就不怕沒電的問題,這項殺手級應用聽起來很科幻,但現實世界,可充電公路已進入測試階段,離實際應用應該也不遠了。

將無線充電套件嵌入道路表面上,就成了名符其實的充電道路,美國晶片廠高通近期就在法國測試道路上展示這項技術,稱之為電動車行進間充電(dynamic electric vehicle charging,簡稱DEVC)。

據Economictimes報導,DEVC可對高速行駛之汽車,以最高20kW的功率充電,目前同一條跑道上,DEVC能同時對兩輛電動車進行充電。

歐洲非常重視電動車發展,這項計畫是由歐盟執委會(European Commission)主導,共耗費一千萬美元,來自九個歐盟成員國的25個機構共同參與。報導指出,無線充電電動車預計2017、2018年上市,多數主要車廠正準備制訂全球無線充電標準。

(本文內容由授權使用。圖片出處:wikipedia)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置,台北網頁設計,各種案例分享

美國各州急尋經費修路、電動車爽領補貼的日子將盡?

電動車爽領補貼、減免稅率的好日子快要結束?美國不少基礎建設早該翻修,各州為了尋找經費焦頭爛額,紛紛把腦筋動到電動車頭上。今(2017)年美國至少已有五州通過對電動車徵稅的法案,當中甚至包括對環保議題最為熱衷的加州。

CNBC 3日報導(見此),美國包括加州在內的不少州,已在今年通過對電動車加稅,一年徵收100-200美元不等。加州州長布朗(Jerry Brown)在今年春季通過法案時表示,安全和順暢的道路,不但能使加州成為更佳的居住地,也會提振州內經濟活動,增加數千個工作機會。

加州的決定,顯示市場對電動車的心態已有轉變。美國不少州原本都對環保汽車相當友善,提出減稅補貼等獎勵措施,鼓勵駕駛人換車。如今各州財政緊繃,道路又坑坑巴巴、亟待修整,電動車便成了眾矢之的。自2013年以來,美國24州、華盛頓哥倫比亞特區都已決定調高電動車的燃料稅(gas tax),其中加州把燃料稅調高12美分,以支應524億美元道路維修暨壅塞紓解方案的半數費用。

環保人士擔憂,這些費用可能會壓抑電動車的銷售量。不僅如此,購買電動車所享有的7,500美元聯邦減稅優惠,也會在電動車賣出20萬輛後遭到解除。根據汽車銷售暨資訊網站Edmunds.com估計,電動車對整體汽車市場的佔有率目前僅有0.6%,銷售量成長率則從2013年的227%,驟降至2016年的5%。

Barronˋs Next 5月9日報導,Edmunds當時就悲觀預測(見此),電動車聯邦減稅優惠終結將摧毀美國電動車車市。當局規定,車商的前20萬名客戶,可以獲得補助,如今特斯拉(Tesla)已售出將近10萬輛電動車,估計明年優惠就會結束。

特斯拉平價車款「Model 3」定價3.5萬美元,扣掉7,500美元補貼之後,買家等於只要付2.75萬美元,差距極為明顯。特斯拉想打入大眾車市,必須對上2萬美元的汽油車和油電混合車,少了優惠之後,兩者價差更為懸殊。

以美國喬治亞州為例,該州取消購買電動車的5,000美元稅務優惠之後,買氣急凍。有稅務優惠時,喬治亞州佔全美電動車銷售的17%;取消之後,銷售比重驟降至2%。Edmunds據此推論,補助結束後,電動車市將崩盤。Edmunds報告指出,高檔電動車較不受稅務優惠影響,但是一般買家會在意補貼。補助終結後,電動車廠必須大砍售價,才能維持買氣。

(本文內容由授權使用。圖片出處:public domain CC BY 0)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

Jaguar 宣布進軍電動車市場,要來挑戰Tesla

各個車廠看到電動車的趨勢,不願意讓Tesla 再繼續引領風潮,包括Jaguar 也將在2018 年下半年發表電動車車款。

Jaguar 的新電動車概念車I-PACE 將在2018 年下半年推出,將是Jaguar 第一台純電動車。性能方面具備700Nm 高扭力,400PS 馬力與4 秒內完成0~100km/h 加速的超高性能,相信是追求速度和零排放車主的選擇。

Jaguar 決定推出全電動車,意味著要跟Tesla 在SUV 市場短兵相接。由於電動車不用傳統車子的馬達系統,車內空間可以更寬敞讓乘客和駕駛更舒適。

(合作媒體:。圖片出處:Jaguar)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計

※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置,台北網頁設計,各種案例分享

[機器學習筆記]kNN進鄰算法

K-近鄰算法

一、算法概述

(1)採用測量不同特徵值之間的距離方法進行分類

  • 優點: 精度高、對異常值不敏感、無數據輸入假定。
  • 缺點: 計算複雜度高、空間複雜度高。

(2)KNN模型的三個要素

kNN算法模型實際上就是對特徵空間的的劃分。模型有三個基本要素:距離度量、K值的選擇和分類決策規則的決定。

  • 距離度量

    距離定義為:
    \[L_p(x_i,x_j)=\left( \sum^n_{l=1} |x_i^{(l)} – x_j^{(l)}|^p \right) ^{\frac{1}{p}}\]
    一般使用歐式距離:p = 2的個情況
    \[L_p(x_i,x_j)=\left( \sum^n_{l=1} |x_i^{(l)} – x_j^{(l)}|^2 \right) ^{\frac{1}{2}}\]

  • K值的選擇

    一般根據經驗選擇,需要多次選擇對比才可以選擇一個比較合適的K值。

    如果K值太小,會導致模型太複雜,容易產生過擬合現象,並且對噪聲點非常敏感。

    如果K值太大,模型太過簡單,忽略的大部分有用信息,也是不可取的。

  • 分類決策規則

    一般採用多數表決規則,通俗點說就是在這K個類別中,哪種類別最後就判別為哪種類型

二、實施kNN算法

2.1 偽代碼

  • 計算法已經類別數據集中的點與當前點之間的距離
  • 按照距離遞增次序排序
  • 選取與但前點距離最小的k個點
  • 確定前k個點所在類別的出現頻率
  • 返回前k個點出現頻率最高的類別作為當前點的預測分類

2.2 實際代碼

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]
    diffMat = tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()     
    classCount={}          
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

三、實際案例:使用kNN算法改進約會網站的配對效果

我的朋友阿J一直使用在線約會軟件尋找約會對象,他曾經交往過三種類型的人:

  • 不喜歡的人
  • 感覺一般的人
  • 非常喜歡的人

步驟:

  • 收集數據
  • 準備數據:也就是讀取數據的過程
  • 分析數據:使用Matplotlib畫出二維散點圖
  • 訓練算法
  • 測試算法
  • 使用算法

3.1 準備數據

樣本數據共有1000個,3個特徵值,共有4列數據,最後一列表示標籤分類(0:不喜歡的人;1:感覺一般的人;2:非常喜歡的人)

特徵

  • 每年獲得的飛行常客里程數
  • 玩視頻遊戲所好的時間百分比
  • 每周消費的冰淇淋公斤數

部分數據如下:

40920   8.326976    0.953952    3
14488   7.153469    1.673904    2
26052   1.441871    0.805124    1
75136   13.147394   0.428964    1
38344   1.669788    0.134296    1
72993   10.141740   1.032955    1
35948   6.830792    1.213192    3
42666   13.276369   0.543880    3
67497   8.631577    0.749278    1
35483   12.273169   1.508053    3

讀取數據(讀取txt文件)

def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = zeros((numberOfLines,3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1]))
        index += 1
    return returnMat,classLabelVector

3.2 分析數據:使用Matplotlib創建散點圖

初步分析
import matplotlib
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
ax.set_xlabel("玩視頻遊戲所耗時間百分比")
ax.set_ylabel("每周消費的冰淇淋公斤數")
plt.show()

因為有三種類型的分類,這樣看的不直觀,我們添加以下顏色

fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
ax.scatter(datingDataMat[:,1], datingDataMat[:,2], 15.0*array(datingLabels), 15.0*array(datingLabels))
ax.set_xlabel("玩視頻遊戲所耗時間百分比")
ax.set_ylabel("每周消費的冰淇淋公斤數")
plt.show()

通過都多次的嘗試后發現,玩遊戲時間和冰淇淋這個兩個特徵關係比較明顯

具體的步驟:

  • 分別將標籤為1,2,3的三種類型的數據分開
  • 使用matplotlib繪製,並使用不同的顏色加以區分
datingDataType1 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==1])
datingDataType2 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==2])
datingDataType3 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==3])
                   

fig, axs = plt.subplots(2, 2, figsize = (15,10))
axs[0,0].scatter(datingDataType1[:,0], datingDataType1[:,1], s = 20, c = 'red')
axs[0,1].scatter(datingDataType2[:,0], datingDataType2[:,1], s = 30, c = 'green')
axs[1,0].scatter(datingDataType3[:,0], datingDataType3[:,1], s = 40, c = 'blue')
type1 = axs[1,1].scatter(datingDataType1[:,0], datingDataType1[:,1], s = 20, c = 'red')
type2 = axs[1,1].scatter(datingDataType2[:,0], datingDataType2[:,1], s = 30, c = 'green')
type3 = axs[1,1].scatter(datingDataType3[:,0], datingDataType3[:,1], s = 40, c = 'blue')
axs[1,1].legend([type1, type2, type3], ["Did Not Like", "Liked in Small Doses", "Liked in Large Doses"], loc=2)
axs[1,1].set_xlabel("玩視頻遊戲所耗時間百分比")
axs[1,1].set_ylabel("每周消費的冰淇淋公斤數")

plt.show()

3.3 準備數據:數據歸一化

通過上面的圖形繪製,發現三個特徵值的範圍不一樣,在使用KNN進行計算距離的時候,數值大的特徵值就會對結果產生更大的影響。

數據歸一化:就是將幾組不同範圍的數據,轉換到同一個範圍內。

公式: newValue = (oldValue – min)/(max – min)

def autoNorm(dataSet):
    minVals = dataSet.min(0) # array([[1,20,3], [4,5,60], [7,8,9]])   min(0) = [1, 5, 3]
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normData = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normData = (dataSet - tile(minVals, (m,1)))/tile(ranges,(m,1))
    return normData

3.4 測試算法

我們將原始樣本保留20%作為測試集,剩餘80%作為訓練集

def datingClassTest():
    hoRatio = 0.20  
    datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')       #load data setfrom file
    normMat = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i,:],normMat[numTestVecs:,:],datingLabels[numTestVecs:],3)
        if (classifierResult != datingLabels[i]): 
            errorCount += 1.0
    print ("the total error rate is: %f" % (errorCount/float(numTestVecs)))
    print (errorCount)

運行結果

the total error rate is: 0.080000
16.0

四、源代碼

from numpy import *
import operator
from os import listdir

import matplotlib
import matplotlib.pyplot as plt
    
## KNN function
def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]
    diffMat = tile(inX, (dataSetSize,1)) - dataSet
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()     
    classCount={}          
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

# read txt data
def file2matrix(filename):
    fr = open(filename)
    numberOfLines = len(fr.readlines())         #get the number of lines in the file
    returnMat = zeros((numberOfLines,3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    fr = open(filename)
    index = 0
    for line in fr.readlines():
        line = line.strip()
        listFromLine = line.split('\t')
        returnMat[index,:] = listFromLine[0:3]
        classLabelVector.append(int(listFromLine[-1]))
        index += 1
    return returnMat,classLabelVector


def autoNorm(dataSet):
    minVals = dataSet.min(0) # array([[1,20,3], [4,5,60], [7,8,9]])   min(0) = [1, 5, 3]
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normData = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normData = (dataSet - tile(minVals, (m,1)))/tile(ranges,(m,1))
    return normData
    
    
    
    
def drawScatter1(datingDataMat, datingLabels):
    plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
    ax.set_xlabel("玩視頻遊戲所耗時間百分比")
    ax.set_ylabel("每周消費的冰淇淋公斤數")
    plt.show()
    
def drawScatter2(datingDataMat, datingLabels):
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(datingDataMat[:,1], datingDataMat[:,2])
    ax.scatter(datingDataMat[:,1], datingDataMat[:,2], 15.0*array(datingLabels), 15.0*array(datingLabels))
    ax.set_xlabel("玩視頻遊戲所耗時間百分比")
    ax.set_ylabel("每周消費的冰淇淋公斤數")
    plt.show()
    
    
def drawScatter3(datingDataMat, datingLabels):
    datingDataType1 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==1])
    datingDataType2 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==2])
    datingDataType3 = array([[x[0][0],x[0][1],x[0][2]] for x in zip(datingDataMat,datingLabels) if x[1]==3])

    fig, axs = plt.subplots(2, 2, figsize = (15,10))
    axs[0,0].scatter(datingDataType1[:,0], datingDataType1[:,1], s = 20, c = 'red')
    axs[0,1].scatter(datingDataType2[:,0], datingDataType2[:,1], s = 30, c = 'green')
    axs[1,0].scatter(datingDataType3[:,0], datingDataType3[:,1], s = 40, c = 'blue')
    type1 = axs[1,1].scatter(datingDataType1[:,0], datingDataType1[:,1], s = 20, c = 'red')
    type2 = axs[1,1].scatter(datingDataType2[:,0], datingDataType2[:,1], s = 30, c = 'green')
    type3 = axs[1,1].scatter(datingDataType3[:,0], datingDataType3[:,1], s = 40, c = 'blue')
    axs[1,1].legend([type1, type2, type3], ["Did Not Like", "Liked in Small Doses", "Liked in Large Doses"], loc=2)
    axs[1,1].set_xlabel("玩視頻遊戲所耗時間百分比")
    axs[1,1].set_ylabel("每周消費的冰淇淋公斤數")

    plt.show()
    
    
    
def datingClassTest():
    hoRatio = 0.20  
    datingDataMat,datingLabels = file2matrix('datingTestSet2.txt')       #load data setfrom file
    normMat = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i,:],normMat[numTestVecs:,:],datingLabels[numTestVecs:],3)
        if (classifierResult != datingLabels[i]): 
            errorCount += 1.0
    print ("the total error rate is: %f" % (errorCount/float(numTestVecs)))
    print (errorCount)
    
    
datingDataMat, datingLabels = file2matrix("datingTestSet2.txt")

drawScatter1(datingDataMat, datingLabels)
drawScatter2(datingDataMat, datingLabels)
drawScatter3(datingDataMat, datingLabels)
 
datingClassTest()

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

※網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整