Skip to content

Commit 821b2d1

Browse files
authored
Merge pull request #3 from JuliaRecsys/persa2p0
Fixing to julia 1.0 and the new persa's interface
2 parents 64b8f61 + c4debff commit 821b2d1

File tree

7 files changed

+59
-62
lines changed

7 files changed

+59
-62
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
language: julia
33
os:
44
- linux
5-
- osx
65
julia:
7-
- 0.6
6+
- 1.0
7+
- nightly
88
notifications:
99
email: false
1010
# uncomment the following lines to override the default test script

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ julia> dataset = DatasetsCF.MovieLens();
1717
1818
julia> using Persa
1919
20-
julia> μ = Persa.mean(dataset)
20+
julia> using Statistic
21+
22+
julia> μ = mean(dataset)
2123
3.52986
2224
```
2325

REQUIRE

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
julia 0.6
1+
julia 1.0
22
Persa
33
MLBase
44
DataFrames
55
BinDeps
6+
CSV

appveyor.yml

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
environment:
22
matrix:
3-
- JULIAVERSION: "julialang/bin/winnt/x86/0.6/julia-0.5-latest-win32.exe"
4-
- JULIAVERSION: "julialang/bin/winnt/x64/0.6/julia-0.5-latest-win64.exe"
5-
- JULIAVERSION: "julianightlies/bin/winnt/x86/julia-latest-win32.exe"
6-
- JULIAVERSION: "julianightlies/bin/winnt/x64/julia-latest-win64.exe"
3+
- julia_version: 0.6
4+
- julia_version: 0.7
5+
- julia_version: 1.0
6+
- julia_version: latest
77

88
branches:
99
only:
@@ -17,18 +17,12 @@ notifications:
1717
on_build_status_changed: false
1818

1919
install:
20-
# Download most recent Julia Windows binary
21-
- ps: (new-object net.webclient).DownloadFile(
22-
$("http://s3.amazonaws.com/"+$env:JULIAVERSION),
23-
"C:\projects\julia-binary.exe")
24-
# Run installer silently, output to C:\projects\julia
25-
- C:\projects\julia-binary.exe /S /D=C:\projects\julia
20+
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
2621

2722
build_script:
28-
# Need to convert from shallow to complete for Pkg.clone to work
29-
- IF EXIST .git\shallow (git fetch --unshallow)
30-
- C:\projects\julia\bin\julia -e "versioninfo();
31-
Pkg.clone(pwd(), \"DatasetsCF\"); Pkg.build(\"DatasetsCF\")"
23+
- echo "%JL_BUILD_SCRIPT%"
24+
- C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%"
3225

3326
test_script:
34-
- C:\projects\julia\bin\julia -e "Pkg.test(\"DatasetsCF\")"
27+
- echo "%JL_TEST_SCRIPT%"
28+
- C:\julia\bin\julia -e "%JL_TEST_SCRIPT%"

src/DatasetsCF.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ module DatasetsCF
22

33
# package code goes here
44
using Persa
5-
using MLBase
5+
using MLBase: labelencode, labelmap
66
using DataFrames
77
using BinDeps
8+
using CSV
89

910
include("movielens.jl")
10-
include("others.jl")
11+
#include("others.jl")
1112

1213
end # module

src/movielens.jl

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,55 @@
11
const defdir = joinpath(dirname(@__FILE__), "..", "datasets")
22

33
function getmovielensdata(dir)
4-
mkpath(dir)
5-
path = download("http://files.grouplens.org/datasets/movielens/ml-100k.zip")
6-
run(unpack_cmd(path,dir,".zip", ""))
4+
mkpath(dir)
5+
path = download("http://files.grouplens.org/datasets/movielens/ml-100k.zip")
6+
run(unpack_cmd(path,dir,".zip", ""))
77
end
88

99
function getmovielensdata1m(dir)
10-
mkpath(dir)
11-
path = download("http://files.grouplens.org/datasets/movielens/ml-1m.zip")
12-
run(unpack_cmd(path,dir,".zip", ""))
10+
mkpath(dir)
11+
path = download("http://files.grouplens.org/datasets/movielens/ml-1m.zip")
12+
run(unpack_cmd(path,dir,".zip", ""))
1313
end
1414

1515
"""
16-
MovieLens()::Persa.TimeCFDataset
16+
MovieLens()::Persa.Dataset
1717
1818
Return MovieLens 100k dataset.
1919
"""
20-
function MovieLens()::Persa.TimeCFDataset
21-
file = "$(defdir)/ml-100k/u.data"
20+
function MovieLens()::Persa.Dataset
21+
filename = "$(defdir)/ml-100k/u.data"
2222

23-
isfile(file) || getmovielensdata(defdir)
23+
isfile(filename) || getmovielensdata(defdir)
2424

25-
file = readtable(file, separator = ' ', header = false)
25+
file = CSV.read(filename, delim = ' ',
26+
header = [:user, :item, :rating, :timestamp],
27+
allowmissing = :none)
2628

27-
df = DataFrame()
28-
29-
df[:user] = file[:,1]
30-
df[:item] = file[:,2]
31-
df[:rating] = file[:,3]
32-
df[:timestamp] = file[:,4]
33-
34-
return Persa.Dataset(df)
29+
return Persa.Dataset(file)
3530
end
3631

3732
"""
38-
MovieLens1M()::Persa.TimeCFDataset
33+
MovieLens1M()::Persa.Dataset
3934
4035
Return MovieLens 1M dataset.
4136
"""
42-
function MovieLens1M()::Persa.TimeCFDataset
43-
file = "$(defdir)/ml-1m/ratings.dat"
37+
function MovieLens1M()::Persa.Dataset
38+
filename = "$(defdir)/ml-1m/ratings.dat"
4439

45-
isfile(file) || getmovielensdata1m(defdir)
40+
isfile(filename) || getmovielensdata1m(defdir)
4641

47-
file = readtable(file, separator = ':', header = false)
42+
file = CSV.read(filename, delim = "::",
43+
header = [:user, :item, :rating, :timestamp],
44+
allowmissing = :all)
4845

49-
df = DataFrame()
46+
df = DataFrame()
5047

51-
df[:user] = file[:,1]
52-
df[:item] = labelencode(labelmap(file[:,3]), file[:,3])
53-
df[:rating] = file[:,5]
54-
df[:timestamp] = file[:,7]
48+
df[:user] = convert(Array{Int}, file[:user])
49+
df[:item] = convert(Array{Int}, file[:item])
50+
df[:item] = labelencode(labelmap(df[:item]), df[:item])
51+
df[:rating] = convert(Array{Int}, file[:rating])
52+
df[:timestamp] = convert(Array{Int}, file[:timestamp])
5553

56-
return Persa.Dataset(df)
54+
return Persa.Dataset(df)
5755
end

test/runtests.jl

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
1+
using Persa
12
using DatasetsCF
2-
using Base.Test
3+
using Test
34

45
# write your own tests here
56
ds = DatasetsCF.MovieLens()
6-
@test ds.users == 943
7-
@test ds.items == 1682
8-
@test length(ds.preferences.possibles) == 5
9-
@test ds.preferences.min == 1
10-
@test ds.preferences.max == 5
7+
@test Persa.users(ds) == 943
8+
@test Persa.items(ds) == 1682
9+
@test Persa.size(ds.preference) == 5
10+
@test Persa.minimum(ds.preference) == 1
11+
@test Persa.maximum(ds.preference) == 5
1112

1213
ds = DatasetsCF.MovieLens1M()
13-
@test ds.users == 6040
14-
@test ds.items == 3706
15-
@test length(ds.preferences.possibles) == 5
16-
@test ds.preferences.min == 1
17-
@test ds.preferences.max == 5
14+
@test Persa.users(ds) == 6040
15+
@test Persa.items(ds) == 3706
16+
@test Persa.size(ds.preference) == 5
17+
@test Persa.minimum(ds.preference) == 1
18+
@test Persa.maximum(ds.preference) == 5

0 commit comments

Comments
 (0)