發表文章

目前顯示的是 2019的文章

SQL ZOO PART 2 : SUM and COUNT & The JOIN operation

圖片
承接 上一篇  的練習, 這次繼續玩下去~~~ SUM and COUNT https://sqlzoo.net/wiki/SUM_and_COUNT 1.  Show the total  population  of the world. SELECT SUM(population) FROM world 2.  List all the continents - just once each. SELECT DISTINCT(continent) FROM world 3.  Give the total GDP of Africa SELECT SUM(gdp) from world where continent like 'Africa' 4.  How many countries have an  area  of at least 1000000 SELECT COUNT(name) FROM world WHERE area > 1000000 5.  What is the total  population  of ('Estonia', 'Latvia', 'Lithuania') SELECT SUM(population) FROM world where name in ('Estonia', 'Latvia', 'Lithuania') 6.  For each  continent  show the  continent  and number of countries. SELECT continent, COUNT(name) FROM world GROUP BY continent 7.  For each  continent  show the  continent  and number of countries with populations of at least 10 million. SELECT continent...

SQL ZOO PART 1 : SELECT from nobel & SELECT within SELECT

SQL ZOO 練習 SQL ZOO是蠻適合新手練習SQL語法的地方,這次單純將練習時的結果紀錄下來,Nobel以前的章節都蠻基礎,nobel則是綜合前面章節的小練習,所以來試試看~ 第二段SELECT WITHIN SELECT則是巢狀的應用,稍微複雜不過稍為看一下不會太難懂 SELECT from Nobel https://sqlzoo.net/wiki/SELECT_from_Nobel_Tutorial 1.  Change the query shown so that it displays Nobel prizes for 1950. SELECT * FROM nobel WHERE yr = 1950 2.  Show who won the 1962 prize for Literature. SELECT winner FROM nobel WHERE yr = 1962 AND subject = 'Literature' 3.  Show the year and subject that won 'Albert Einstein' his prize. SELECT yr, subject FROM nobel WHERE winner LIKE 'Albert Einstein' 4.  Give the name of the 'Peace' winners since the year 2000, including 2000. SELECT winner FROM nobel WHERE subject LIKE 'Peace' AND yr >= 2000 5.  Show all details ( yr ,  subject ,  winner ) of the Literature prize winners for 1980 to 1989 inclusive. SELECT*FROM nobel WHERE subject LIKE 'Literature' AND yr BETWEEN 1980 AND 1989 6.  Show...

Credit card fraud detection 更

圖片
這次探勘的主題是信用卡的詐騙偵測,我們將根據資料的特性對於個案最後是否為詐騙人士, 資料一樣來自Kaggle https://www.kaggle.com/mlg-ulb/creditcardfraud 和過往資料不同的是目標的比例非常懸殊,畢竟詐騙集團的新聞雖然常見,但說老實話,和一般小老百姓作比例的話,也算是冰山一小角,這樣的資料難點是在於如何在詐騙比例很少的情況下仍然能得到充分的訓練(Training),詐騙份數少容易導致模型訓練太多非詐騙的資料集進而影響最後Testing的結果。 面對這樣的情況,最直接的作法是 1. 再去收集小比例的資料(廢話?) 2. 缺樣本,那我們反覆抽取更多給它 (Over Sample) 3. 缺樣本,那我們讓高比例的取樣相對沒那麼多就好 (Under Sample) 4.  SMOTE (Synthetic Minority Oversampling Technique)  , 最有名的樣本合成方法, 原理跟KNN一樣,找取最鄰近的詐騙樣本,生成新的樣本。 (有關Sampling :  https://www.zhihu.com/question/269698662 ) (有關SMOTE:   https://reurl.cc/5gDgX7 ) 方法1有現實上的困難 方法2的缺點是過分強調詐騙的比例可能會導致Overfitting 方法3的缺點是捨棄大部分的數據可能因此失去非詐騙比例可以收集的資訊 方法4雖然有不錯的分類效果,但是一樣有過份強調的後果導致最後模型失真,一樣有Overffitting 的風險。 每個方法都有各自的風險,而本次分析決定採用: 1. Over-Undersampling,將詐騙比例oversampling;再將非詐騙比例undersampling 2. SMOTE生成樣本後進行分析 3. 不對資料集作處理直接分析 直接開始分析吧! library(tidyverse) # everything library(reshape2) # melting tables library(caret) # training, cross-validation, hyperparameter search librar...

New York City Taxi Fare Prediction

圖片
credit to :  https://en.wikipedia.org/wiki/Taxicab#/media/File:TAXI.jpg 承接上一篇NYC Airbnb 的data mining後,這次緊接著是NYC的計程車票價預測 資料一樣來自Kaggle https://www.kaggle.com/c/new-york-city-taxi-fare-prediction 主要的變數有: ID 主要為搭車的年份 / 日期 / 時間 再加上 編號 (pickup datetime + integer) Features pickup_datetime  - 搭車 年份 / 日期 / 時間 pickup_longitude  -  搭車經度 pickup_latitude  - 搭車緯度 dropoff_longitude  - 下車經度 dropoff_latitude  -  下車緯度 passenger_count  - 乘客人數 Target fare_amount  -  本次主要預測的 目標 ,將預測後的資料繳交,Kaggle會告訴我預測的RMSE 話不多說,我們開始吧!!!!! #library library(tidyverse) library('jsonlite') library(rlang) library(data.table) library(ggplot2) library(lubridate) library(dplyr) library(geosphere) library(caret) library(xgboost) library(DataExplorer) library(mlr) library(gridExtra) library(ggridges) 先把package準備好~~~ 讀檔,這次的訓練集檔案龐大,所以取其中300萬筆來跑.....(筆電跑起來其實真的蠻lag的) NA值很少不超過20個,所以索性直接拿掉了。 #Read files and find na train...