Thứ Hai, 21 tháng 12, 2015

Predicting how long to replace N servers node

My customer (a Data Center) give me a small dataset that contain time to replace N servers node.
I need to analysis and build predicting program that can predict how long to replace N servers node.

Input Training:

  •  Data of "p027.txt" show below:
Minutes Units
23    1 
29    2 
49    3 
64    4 
74    4 
87    5 
96    6 
97    6  
109   7  
119   8  
149   9  
145   9  
154   10  
166   10 

Example Input test:


2
40
8
10

Example Output:

Predicting minutes for units


35
622
128
159

Visualization about Model:  


### Code:
import graphlab
# if not csv format, need specify delimiter
sf = graphlab.SFrame.read_csv('http://www.ats.ucla.edu/stat/examples/chp/p027.txt',delimiter='\t')
graphlab.canvas.set_target('ipynb')
sf.show(view="Scatter Plot", x="Minutes", y="Units")

Finally, what i need:  SFrame - Python

Resources you will need:

  • Graphlab library
  • SFrame library

Example Code:


import graphlab
sf = graphlab.SFrame.read_csv('http://www.ats.ucla.edu/stat/examples/chp/p027.txt',delimiter='\t')
my_features1 = ["Units"]

my_features_model = graphlab.linear_regression.create(sf,target='Minutes',features=my_features1,validation_set=None)

repair_time = {
                           'Units':10
             }

print my_features_model.predict(repair_time)

Finish. Classify the problem to become linear regression single value. It's my simple way to solve.

Chủ Nhật, 20 tháng 12, 2015

Predicting house prices

My fucking boss give me the fucking challenge "how to predict house prices". I wondered what to do... It's difficult because i don't know what is the feature1 and feature2. How to start?

Input Traning:

  • Content Traning.csv file:

features1,features2,price
0.44,0.68,511.14
0.99,0.23,717.1
0.84,0.29,607.91
0.28,0.45,270.4
0.07,0.83,289.88
0.66,0.8,830.85
0.73,0.92,1038.09
0.57,0.43,455.19
0.43,0.89,640.17
0.27,0.95,511.06
0.43,0.06,177.03
0.87,0.91,1242.52
0.78,0.69,891.37
0.9,0.94,1339.72
0.41,0.06,169.88
0.52,0.17,276.05
0.47,0.66,517.43
0.65,0.43,522.25
0.85,0.64,932.21
0.93,0.44,851.25
0.41,0.93,640.11
0.36,0.43,308.68
0.78,0.85,1046.05
0.69,0.07,332.4
0.04,0.52,171.85
0.17,0.15,109.55
0.68,0.13,361.97
0.84,0.6,872.21
0.38,0.4,303.7
0.12,0.65,256.38
0.62,0.17,341.2
0.79,0.97,1194.63
0.82,0.04,408.6
0.91,0.53,895.54
0.35,0.85,518.25
0.57,0.69,638.75
0.52,0.22,301.9
0.31,0.15,163.38
0.6,0.02,240.77
0.99,0.91,1449.05
0.48,0.76,609.0
0.3,0.19,174.59
0.58,0.62,593.45
0.65,0.17,355.96
0.6,0.69,671.46
0.95,0.76,1193.7
0.47,0.23,278.88
0.15,0.96,411.4
0.01,0.03,42.08
0.26,0.23,166.19
0.01,0.11,58.62
0.45,0.87,642.45
0.09,0.97,368.14
0.96,0.25,702.78
0.63,0.58,615.74
0.06,0.42,143.79
0.1,0.24,109.0
0.26,0.62,328.28
0.41,0.15,205.16
0.91,0.95,1360.49
0.83,0.64,905.83
0.44,0.64,487.33
0.2,0.4,202.76
0.43,0.12,202.01
0.21,0.22,148.87
0.88,0.4,745.3
0.31,0.87,503.04
0.99,0.99,1563.82
0.23,0.26,165.21
0.79,0.12,438.4
0.02,0.28,98.47
0.89,0.48,819.63
0.02,0.56,174.44
0.92,0.03,483.13
0.72,0.34,534.24
0.3,0.99,572.31
0.86,0.66,957.61
0.47,0.65,518.29
0.79,0.94,1143.49
0.82,0.96,1211.31
0.9,0.42,784.74
0.19,0.62,283.7
0.7,0.57,684.38
0.7,0.61,719.46
0.69,0.0,292.23
0.98,0.3,775.68
0.3,0.08,130.77
0.85,0.49,801.6
0.73,0.01,323.55
1.0,0.23,726.9
0.42,0.94,661.12
0.49,0.98,771.11
0.89,0.68,1016.14
0.22,0.46,237.69
0.34,0.5,325.89
0.99,0.13,636.22
0.28,0.46,272.12
0.87,0.36,696.65
0.23,0.87,434.53
0.77,0.36,593.86

Input test


0.49 0.18
0.57 0.83
0.56 0.64
0.76 0.18

Output:

Predicting house price

105.22
142.68
132.94
129.71

Finally, i found what i need:  SFrame - Python

Resources you will need:

  • Graphlab library
  • SFrame library

Example Code:

Bill gates' house 

import graphlab
sf = graphlab.SFrame('Training.csv')
my_features1 = ["features1","features2"]
my_features_model = graphlab.linear_regression.create(sf,target='price',features=my_features1,validation_set=None)
bill_gates = {
                           'features1':0.49,
                           'features2':0.18
                    }
print my_features_model.predict(bill_gates)

Done. i classify this challenge to become linear regression multi values. It's my simple way to solve. Your simple some way?

Thứ Năm, 5 tháng 11, 2015

What is Machine Learning

What is Machine Learning?

Two definitions of Machine Learning are offered. Arthur Samuel described it as: "the field of study that gives computers the ability to learn without being explicitly programmed." This is an older, informal definition.
Tom Mitchell provides a more modern definition: "A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."
Example: playing checkers.
  • E = the experience of playing many games of checkers
  • T = the task of playing checkers.
  • P = the probability that the program will win the next game.

Supervised Learning

In supervised learning, we are given a data set and already know what our correct output should look like, having the idea that there is a relationship between the input and the output.
Supervised learning problems are categorized into "regression" and "classification" problems. In a regressionproblem, we are trying to predict results within a continuous output, meaning that we are trying to map input variables to some continuous function. In a classification problem, we are instead trying to predict results in adiscrete output. In other words, we are trying to map input variables into discrete categories.
Example:
Given data about the size of houses on the real estate market, try to predict their price. Price as a function of size is acontinuous output, so this is a regression problem.
We could turn this example into a classification problem by instead making our output about whether the house "sells for more or less than the asking price." Here we are classifying the houses based on price into two discrete categories.

Unsupervised Learning

Unsupervised learning, on the other hand, allows us to approach problems with little or no idea what our results should look like. We can derive structure from data where we don't necessarily know the effect of the variables.
We can derive this structure by clustering the data based on relationships among the variables in the data.
With unsupervised learning there is no feedback based on the prediction results, i.e., there is no teacher to correct you. It’s not just about clustering. For example, associative memory is unsupervised learning.
Example:
Clustering: Take a collection of 1000 essays written on the US Economy, and find a way to automatically group these essays into a small number that are somehow similar or related by different variables, such as word frequency, sentence length, page count, and so on.
Associative: Suppose a doctor over years of experience forms associations in his mind between patient characteristics and illnesses that they have. If a new patient shows up then based on this patient’s characteristics such as symptoms, family medical history, physical attributes, mental outlook, etc the doctor associates possible illness or illnesses based on what the doctor has seen before with similar patients. This is not the same as rule based reasoning as in expert systems. In this case we would like to estimate a mapping function from patient characteristics into illnesses.

Thứ Tư, 4 tháng 11, 2015

R lang cách tìm max min truy vấn trong dataframe

dataframe trong R có thể giúp tính các giá trị như avg ,min , max , có thể select cả row theo các điều kiện ví dụ

cho dataframe .


http://pastebin.com/vVmzeBbs

giờ muốn xac định xem row nào có giá trị  của cột heart attack min

kiểu như muốn Select * Where heartattack= min(heartattack)

df[which.min(df$heartattack), ]

hoặc nếu muốn loại trừ các row NA thì dùng cách này 

 outcome[which(outcome$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack == min(outcome$Hospital.30.Day.Death..Mortality..Rates.from.Heart.Attack, na.rm = TRUE)),]$Hospital.Name 

Nếu muốn thêm vài điều kiện như state phải là TX
cách dễ nhất là tạo ra 1 subset nguyên của TX

tx <- subset(outcome,State == "TX")


Read a csv file in R

using read.csv function
pm25 <- read.csv(file="data/avgpm25.csv")

Unzip a zip file in R

using unzip function
unzip(zipfile = "PM25data.zip",exdir = ".")

Thứ Sáu, 18 tháng 9, 2015

Học R qua swirl

R có swirl dùng để học khá nhanh

install.packages("swirl")
library(swirl)
swirl()



Có khoảng 15 bài vừa là lý thuyết vừa là thục hành - trắc nghiệm 

Kiểu thế này


> vect2 <- c(11,2,NA)

| You got it right!


  |                                                                                                 
  |=============================================================================              |  84%
| Then, we can add the `names` attribute to vect2 after the fact with names(vect2) <- c("foo",
| "bar", "norf"). Go ahead.

> names(vect2)<- c("foo","bar","norf")

| Great job!


  |                                                                                                 
  |===============================================================================            |  87%
| Now, let's check that vect and vect2 are the same by passing them as arguments to the identical()
| function.

Thứ Hai, 14 tháng 9, 2015

function trong R

Khai báo function đại khái dư lày

rankhospital <- function(state, outcome, num = "best")

có cái hàm rất chuối là stop xem ví dụ

  1. rankhospital <- function(state, outcome, num = "best") {
  2. ## Read outcome data
  3. ## Check that state and outcome are valid
  4. ## Return hospital name in that state with the given rank
  5. ## 30-day death rate
  6. if(outcome=="heart attack"||outcome=="heart failure"||outcome=="pneumonia")
  7. {
  8. }
  9. else
  10. {
  11.         #print( "invalid outcome")
  12.         stop ("invalid outcome")
  13. }
  14. states = c('AL''AK''AS''AZ''AR''CA''CO''CT''DE''DC''FM''FL''GA''GU''HI''ID''IL''IN''IA''KS''KY''LA','ME''MH''MD''MA''MI''MN''MS''MO''MT''NE''NV''NH''NJ''NM''NY''NC''ND''MP''OH''OK''OR''PW''PA','PR''RI''SC''SD''TN''TX''UT''VT''VI''VA''WA''WV''WI''WY''AE''AA''AP')
  15. if(state %in% names(states) )
  16. {
  17. }
  18. else
  19. {
  20.         #print( "invalid state")
  21.         stop("invalid state")
  22. }
  23. }
function thì có thể nhận tham số qua thứ tự hoặc qua tên tham số

> mydata <- rnorm(100)
> sd(mydata)
> sd(x = mydata)
> sd(x = mydata, na.rm = FALSE)
> sd(na.rm = FALSE, x = mydata)
> sd(na.rm = FALSE, mydata)

Tự học R

Ngôn ngữ R có nguồn gốc từ ngôn ngữ S

S thì được viết bởi John Chambers tại  Bell Labs năm 1976 chuyên về phân tích thống kê  .

R được viết vào năm 1991 , và public vào 1993 và là ngôn ngữ opensource (GPL)

R có thể chạy được trên hầu hết các nền tảng hệ điều hành và vi xử lý .

Nói một cách ngắn gọn, R là một phần mềm sử dụng cho phân tích thống kê và đồ thị. Thật ra về bản chất, R là ngôn ngữ máy tính đa năng, có thể sử dụng cho nhiều mục tiêu khác nhau, từ tính toán đơn giản, toán học giả trí, tính toán ma trận, đến các phân tích thống kê phức tạp. Vì là một ngôn ngữ cho nên người ta có thể sử dụng R để phát triển các thành phần mềm chuyên môn cho một vẫn đề tính toán cá biệt.

Để sử dụng R việc đầu tiên chúng ta cần làm là cài đặt R trong máy tính của mình. Để làm điều này chúng ta truy cập vào website. http://cran.R-project.org và tải R xuống. Khi đã tải R xuống máy tính, bước kế tiếp là cài đặt vào máy tính. Để làm việc này, chúng ta chỉ đơn giản nhấn chuột vào tài liều trên và làm theo hướng dẫn cách cài đặt trên màn hình. Đây là một bước rất đơn giản chỉ cần 1 phút là việc cài đặt sẽ hoàn tất. Sau khi hoàn tất việc cài đặt một icon sẽ xuất hiện trên desktop của máy tính. Đến đây thì chúng ta đã sắn sàng sử dụng R có thể nhấp chuột vào icon này

 Tàu nhanh một số điểm của R như sau .

 x <- 5

có nghĩa là phép gán 5 vào biến x

về các phép toán so sánh thì same họ nhà C

Riêng với bọn chuyên statistic này sẽ có vài kiểu dữ liệu dị như sau

1 Vector hiểu là 1 dạng array

The c() function can be used to create vectors of objects.
> x <- c(0.5, 0.6)       ## numeric
> x <- c(TRUE, FALSE)    ## logical
> x <- c(T, F)           ## logical
> x <- c("a", "b", "c")  ## character
> x <- 9:29              ## integer
> x <- c(1+0i, 2+4i)     ## complex
Using the vector() function
> x <- vector("numeric", length = 10) 
> x
 [1] 0 0 0 0 0 0 0 0 0 0


2.Ma trận 
> m <- matrix(nrow = 2, ncol = 3) 
> m
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
> dim(m)
[1] 2 3
> attributes(m)
$dim
[1] 2 3
3.List giống vector nhưng kiểu dữ liệu trong list có thể khác nhau
> x <- list(1, "a", TRUE, 1 + 4i) 
> x
[[1]]
[1] 1

[[2]] 
[1] "a"

[[3]]
[1] TRUE

[[4]]
[1] 1+4i
4.factor như kiểu list nhưng nó có nhãn (label)

> x <- factor(c("yes", "yes", "no", "yes", "no")) 
> x
[1] yes yes no yes no
Levels: no yes
> table(x) 
x
no yes 
 2   3
> unclass(x)
[1] 2 2 1 2 1
attr(,"levels")
[1] "no"  "yes"
5.data frame cái này thì giống ma trận nhưng kiểu dữ liệu có thể khác nhau
> x <- data.frame(foo = 1:4, bar = c(T, T, F, F)) 
> x
  foo   bar
1   1  TRUE
2   2  TRUE
3   3 FALSE
4   4 FALSE
> nrow(x)
[1] 4
> ncol(x)
[1] 2
6.Names
R object có thể có names 
> x <- 1:3
> names(x)
NULL
> names(x) <- c("foo", "bar", "norf") 
> x
foo bar norf 
  1   2    3
> names(x)
[1] "foo"  "bar"  "norf"
list cũng có thể có names
> x <- list(a = 1, b = 2, c = 3) 
> x
$a
[1] 1

$b 
[1] 2

$c 
[1] 3

ma trận cũng có thể có names
> m <- matrix(1:4, nrow = 2, ncol = 2)
> dimnames(m) <- list(c("a", "b"), c("c", "d")) 
> m
  c d 
a 1 3 
b 2 4