+ - 0:00:00
Notes for current slide
Notes for next slide

Who am I ?

  • My name is Pierre Navaro
  • Scientific Computing Engineer at IRMAR since 2015
  • Julia v1.0 since July 2018

Instructions to open the notebooks

https://plmlab.math.cnrs.fr/navaro/JuliaAgrocampus2023

1 / 61

Why Julia?

  • Started in 2009 and first version was released in 2012.
  • High-level languages like Python and R let one explore and experiment rapidly, but can run slow.
  • Low-level languages like Fortran/C++ tend to take longer to develop, but run fast.
  • This is sometimes called the "two language problem" and is something the Julia developers set out to eliminate.
  • Julia's promise is to provide a "best of both worlds" experience for programmers who need to develop novel algorithms and bring them into production environments with minimal effort.

Julia: A Fresh Approach to Numerical Computing

Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah

SIAM Rev., 59(1), 65–98. (34 pages) 2012

2 / 61

Julia's Engineering and Design Tradoffs

  • Type structures cannot be changed after being created (less dynamism but memory layout can be optimized for)
  • All functions are JIT compiled via LLVM (interactive lags but massive runtime improvements)
  • All functions specialize on types of arguments (more compilation but give generic programming structures)
  • Julia is interactive (use it like Python and R, but makes it harder to get binaries)
  • Julia has great methods for handling mutation (more optimization opportunities like C/Fortran, but more cognitive burden)
  • Julia's Base library and most packages are written in Julia, (you can understand the source, but learn a new package)
  • Julia has expensive tooling for code generation and metaprogramming (concise and more optimizations, but some codes can be for experienced users)

To me, this gives me a language with a lot of depth which works well for computationally-expensive scientific applications.

© ChrisRackaukas

3 / 61

Type-Dispatch Programming

  • Centered around implementing the generic template of the algorithm not around building representations of data.
  • The data type choose how to efficiently implement the algorithm.
  • With this feature share and reuse code is very easy

JuliaCon 2019 | The Unreasonable Effectiveness of Multiple Dispatch | Stefan Karpinski

4 / 61

Time Series : create new type in Julia

"""
TimeSeries{T,N}( nt )
- `T` : type of values
- `N` : number of variables
- `nt` : number of values
"""
struct TimeSeries{T,N}
nt :: Int
nv :: Int
t :: Vector{T}
u :: Vector{Array{T, 1}}
function TimeSeries{T,N}( nt :: Int) where {T,N}
t = zeros(T, nt)
u = [zeros(T, N) for i in 1:nt]
nv = N
new( nt, nv, t, u)
end
end
Main.var"ex-index".TimeSeries
5 / 61
@doc TimeSeries
TimeSeries{T,N}( nt )
  • T : type of values
  • N : number of variables
  • nt : number of values
nt, nv = 100, 2
ts = TimeSeries{Float64, nv}(nt)
ts.nv, ts.nt
(2, 100)
6 / 61

Overload Base.length function

7 / 61

Overload Base.length function

import Base:length
length(ts :: TimeSeries) = ts.nt
nt, nv = 100, 2
ts = TimeSeries{Float64, nv}(nt);
@show length(ts) == nt
true

Generate data

ts.t[1] = 0.0
ts.u[1] = [0.0, 1.0]
dt = 0.01
for i in 2:nt
ts.t[i] = ts.t[i-1] + dt
ts.u[i][1] = sin(ts.t[i])
ts.u[i][2] = cos(ts.t[i])
end
8 / 61
using Plots
plot(ts.t, vcat(ts.u'...))

9 / 61
plot(ts.t, [getindex.(ts.u, i) for i in 1:nv])

10 / 61

Overload the [] operator

we want ts[i] equal to ts.u[:][i] values

11 / 61

Overload the [] operator

we want ts[i] equal to ts.u[:][i] values

import Base: getindex
12 / 61

Overload the [] operator

we want ts[i] equal to ts.u[:][i] values

import Base: getindex
getindex( ts :: TimeSeries, i ) = getindex.(ts.u, i)
getindex (generic function with 284 methods)
13 / 61
plot(ts[1])
plot!(ts[2])

14 / 61

Plot recipe

using RecipesBase
@recipe f(ts::TimeSeries) = vcat(ts.u'...)
plot(ts)

15 / 61

Overload the + operator to add noise

import Base:+
16 / 61

Overload the + operator to add noise

import Base:+
function +(ts :: TimeSeries, ϵ )
for n in 1:ts.nt, d in 1:ts.nv
ts.u[n][d] += ϵ[n,d]
end
return ts
end
+ (generic function with 266 methods)
17 / 61
ts = ts + 0.1*randn((nt,nv));
18 / 61
ts = ts + 0.1*randn((nt,nv));
scatter(ts.t, [ts[1],ts[2]])

19 / 61

Linear regression with obvious operation

using LinearAlgebra
X = hcat(ones(nt), ts.t, ts[1])
y = ts[2]
@show β = inv(X'X) * X'y
3-element Vector{Float64}:
1.0997092611654475
-0.4491752626990362
-0.043450126831331204
20 / 61

Version with QR factorisation

@show β = X \ y
3-element Vector{Float64}:
1.0997092611654484
-0.4491752626990573
-0.04345012683131561

The \ operator is the short-hand for

Q, R = qr(X)
@show β = (inv(factorize(R))Q') * y
3-element Vector{Float64}:
1.0997092611654484
-0.4491752626990569
-0.043450126831315806
21 / 61

Version with singular values decomposition

U, S, V = svd(X)
@show β = V * Diagonal(1 ./ S) * U' * y
3-element Vector{Float64}:
1.0997092611654486
-0.44917526269905755
-0.04345012683131474
22 / 61

Version with singular values decomposition

U, S, V = svd(X)
@show β = V * Diagonal(1 ./ S) * U' * y
3-element Vector{Float64}:
1.0997092611654486
-0.44917526269905755
-0.04345012683131474
@show β = pinv(X, atol=1e-8) * y
3-element Vector{Float64}:
1.0997092611654489
-0.44917526269905783
-0.043450126831314974
23 / 61

With GLM.jl

using GLM
fitted = lm(X, y)
GLM.LinearModel{GLM.LmResp{Vector{Float64}}, GLM.DensePredChol{Float64, LinearAlgebra.CholeskyPivoted{Float64, Matrix{Float64}, Vector{Int64}}}}:
Coefficients:
─────────────────────────────────────────────────────────────────
Coef. Std. Error t Pr(>|t|) Lower 95% Upper 95%
─────────────────────────────────────────────────────────────────
x1 1.09971 0.0220369 49.90 <1e-70 1.05597 1.14345
x2 -0.449175 0.100115 -4.49 <1e-04 -0.647876 -0.250475
x3 -0.0434501 0.106612 -0.41 0.6845 -0.255045 0.168145
─────────────────────────────────────────────────────────────────
24 / 61

Clustering

using CluGen, Plots
n, k = 500, 4
o = clugen(2, k, n, [1, 0], π / 2, [10, 10], 10, 1, 1)
plot(o.points[:, 1], o.points[:, 2], seriestype = :scatter, group=o.clusters)

25 / 61
using BenchmarkTools
@btime omin = minimum(view(o.points,:,1))
@btime omin = minimum(o.points[:,1])
@btime @views omin = minimum(o.points[:,1])
559.805 ns (4 allocations: 160 bytes)
1.226 μs (4 allocations: 4.17 KiB)
665.025 ns (5 allocations: 176 bytes)
26 / 61
omin_x = minimum(o.points[:,1])
o.points[:, 1] .-= omin_x
omax_x = maximum(o.points[:,1])
o.points[:, 1] ./= omax_x
omin_y = minimum(o.points[:,2])
o.points[:, 2] .-= omin_y
omax_y = maximum(o.points[:,2])
o.points[:, 2] ./= omax_y
500-element view(::Matrix{Float64}, :, 2) with eltype Float64:
0.05150913591429948
0.05076195000993125
0.08211837757379832
0.07432054289550463
0.09184561936232206
0.1026934742700536
0.13366228807596342
0.07408076732799851
0.07130896101332615
0.06047619216682257
0.5832383569369922
0.5837470305697766
0.5822081564156026
0.5875960498028272
0.5826117734565991
0.5465090690792758
0.6068451125993966
0.5921324601450353
0.6096462939860531
27 / 61
plot(o.points[:, 1], o.points[:, 2], seriestype = :scatter, group=o.clusters)

28 / 61

Bregman divergence in R

using RCall
R"""
bregman <- function(x,y){
distance <- function(x,y){
if (x==0) {
return(y)
}
else {
return(x * log(x) - x + y - x * log(y))
}
}
return(sum(divergences = mapply(distance, x, y)))
}
"""
RCall.RObject{RCall.ClosSxp}
function (x, y)
{
distance <- function(x, y) {
if (x == 0) {
return(y)
}
else {
return(x * log(x) - x + y - x * log(y))
}
}
return(sum(divergences = mapply(distance, x, y)))
}
29 / 61

Bregman divergence in Julia

"""
bregman(x, y)
Compute Bregman divergence between vectors `x` and `y`
"""
function bregman(x, y)
function distance(x, y)
if x == 0
return y
else
return x * log(x) - (x - y) - x * log(y)
end
end
return sum(distance.(x, y))
end
Main.var"ex-index".bregman
30 / 61
R"""
compute_divergence_min <- function( x, centers ) {
n = nrow(x)
k = ncol(centers)
divergence_min = rep(Inf,n)
cluster = rep(0,n)
for(i in 1:k){
divergence = apply(x,1,bregman, y = centers[,i])
improvement = (divergence < divergence_min)
divergence_min[improvement] = divergence[improvement]
cluster[improvement] = i
}
return(list(divergence_min, cluster))
}
"""
function compute_divergence_min( x, centers )
n = size(x, 1)
k = size(centers, 2)
divergence = zeros(n)
divergence_min = zeros(n)
cluster = zeros(Int, k)
for i = 1:k
for j = 1:n
divergence[j] = bregman(x[j,:], centers[:,i])
if divergence[j] < divergence_min[j]
divergence_min[j] = divergence[j]
cluster[j] = i
end
end
end
return divergence_min, cluster
end
compute_divergence_min (generic function with 1 method)
31 / 61
using Random
centers = transpose(o.points[first(randperm(n),k), :])
x = o.points
@rput x
@rput centers
R"""
system.time({compute_divergence_min(x, centers)})
"""
RCall.RObject{RCall.RealSxp}
user system elapsed
0.068 0.005 0.073
32 / 61
@time divergence_min, cluster = compute_divergence_min( x, centers )
0.107422 seconds (261.76 k allocations: 13.196 MiB, 99.32% compilation time)
@time divergence_min, cluster = compute_divergence_min( x, centers )
0.000450 seconds (6.01 k allocations: 477.062 KiB)
33 / 61
function compute_divergence_min!(divergence_min, cluster, x, centers )
n = size(x, 1)
k = size(centers, 2)
divergence = zeros(n)
for i = 1:k
for j = 1:n
divergence[j] = bregman(x[j,:], centers[:,i])
if divergence[j] < divergence_min[j]
divergence_min[j] = divergence[j]
cluster[j] = i
end
end
end
end
compute_divergence_min! (generic function with 1 method)
34 / 61
divergence_min = zeros(n)
cluster = zeros(Int, k)
@time compute_divergence_min!( divergence_min, cluster, x, centers )
0.038574 seconds (37.91 k allocations: 2.074 MiB, 98.96% compilation time)
@time compute_divergence_min!( divergence_min, cluster, x, centers )
0.000303 seconds (6.00 k allocations: 472.812 KiB)
35 / 61

Application to authors texts clustering

"textes.txt"
36 / 61
using DelimitedFiles
table = readdlm("textes.txt")
51×210 Matrix{Any}:
"Mark Twain" "Mark Twain" … "Obama" "Obama" ""
"be" 435 274 276 283
"have" 112 196 191 277
"say" 153 10 16 15
"do" 136 84 73 106
"go" 108 … 14 13 26
"come" 26 16 20 17
"see" 42 7 15 16
"know" 35 21 29 23
"make" 48 58 43 68
⋮ ⋱
"young" 0 7 12 9
"night" 11 0 3 0
"cry" 9 1 0 0
"word" 7 … 1 5 4
"mind" 7 0 4 3
"house" 8 8 4 0
"sit" 1 2 1 3
"sir" 3 0 0 0
"last" 10 … 18 15 12
37 / 61

Data from texts are stored in some variable df. The commands used for displaying data are the following.

import DataFrames: DataFrame, rename!, ByRow, transform!
import MultivariateStats
import MultivariateStats: PCA, MulticlassLDA
import CategoricalArrays: recode
38 / 61
table = readdlm(joinpath(@__DIR__, "textes.txt"))
df = DataFrame(
hcat(table[2:end, 1], table[2:end, 2:end]),
vec(vcat("authors", table[1, 1:end-1])),
makeunique = true,
)
50×210 DataFrame
RowauthorsMark TwainMark Twain_1Mark Twain_2Mark Twain_3Mark Twain_4Mark Twain_5Mark Twain_6Mark Twain_7Mark Twain_8Mark Twain_9Mark Twain_10Mark Twain_11Mark Twain_12Mark Twain_13Mark Twain_14Mark Twain_15Mark Twain_16Mark Twain_17Mark Twain_18Mark Twain_19Mark Twain_20Mark Twain_21Mark Twain_22Mark Twain_23Mark Twain_24Charles DickensCharles Dickens_1Charles Dickens_2Charles Dickens_3Charles Dickens_4Charles Dickens_5Charles Dickens_6Charles Dickens_7Charles Dickens_8Charles Dickens_9Charles Dickens_10Charles Dickens_11Charles Dickens_12Charles Dickens_13Charles Dickens_14Charles Dickens_15Charles Dickens_16Charles Dickens_17Charles Dickens_18Charles Dickens_19Charles Dickens_20Charles Dickens_21Charles Dickens_22Charles Dickens_23Charles Dickens_24Charles Dickens_25Charles Dickens_26Charles Dickens_27Charles Dickens_28Charles Dickens_29Charles Dickens_30Charles Dickens_31Charles Dickens_32Charles Dickens_33Charles Dickens_34Charles Dickens_35Charles Dickens_36Charles Dickens_37Charles Dickens_38Charles Dickens_39Charles Dickens_40Charles Dickens_41Charles Dickens_42Charles Dickens_43Charles Dickens_44Charles Dickens_45Charles Dickens_46Charles Dickens_47Charles Dickens_48Charles Dickens_49Charles Dickens_50Charles Dickens_51Charles Dickens_52Charles Dickens_53Charles Dickens_54Charles Dickens_55Charles Dickens_56Charles Dickens_57Charles Dickens_58Charles Dickens_59Charles Dickens_60Charles Dickens_61Charles Dickens_62Charles Dickens_63Charles Dickens_64Charles Dickens_65Charles Dickens_66Charles Dickens_67Charles Dickens_68Charles Dickens_69Charles Dickens_70Charles Dickens_71Charles Dickens_72Charles Dickens_73Charles Dickens_74Charles Dickens_75Charles Dickens_76Charles Dickens_77Charles Dickens_78Charles Dickens_79Charles Dickens_80Charles Dickens_81Charles Dickens_82Charles Dickens_83Charles Dickens_84Charles Dickens_85Charles Dickens_86Charles Dickens_87Charles Dickens_88Charles Dickens_89Charles Dickens_90Charles Dickens_91Charles Dickens_92Charles Dickens_93Charles Dickens_94Nathaniel HawthorneNathaniel Hawthorne_1Nathaniel Hawthorne_2Nathaniel Hawthorne_3Nathaniel Hawthorne_4Nathaniel Hawthorne_5Nathaniel Hawthorne_6Nathaniel Hawthorne_7Nathaniel Hawthorne_8Nathaniel Hawthorne_9Nathaniel Hawthorne_10Nathaniel Hawthorne_11Nathaniel Hawthorne_12Nathaniel Hawthorne_13Nathaniel Hawthorne_14Nathaniel Hawthorne_15Nathaniel Hawthorne_16Nathaniel Hawthorne_17Nathaniel Hawthorne_18Nathaniel Hawthorne_19Nathaniel Hawthorne_20Nathaniel Hawthorne_21Nathaniel Hawthorne_22Nathaniel Hawthorne_23Nathaniel Hawthorne_24Nathaniel Hawthorne_25Nathaniel Hawthorne_26Nathaniel Hawthorne_27Nathaniel Hawthorne_28Nathaniel Hawthorne_29Nathaniel Hawthorne_30Nathaniel Hawthorne_31Nathaniel Hawthorne_32Nathaniel Hawthorne_33Nathaniel Hawthorne_34Nathaniel Hawthorne_35Nathaniel Hawthorne_36Nathaniel Hawthorne_37Nathaniel Hawthorne_38Nathaniel Hawthorne_39Nathaniel Hawthorne_40Nathaniel Hawthorne_41Nathaniel Hawthorne_42Sir Arthur Conan DoyleSir Arthur Conan Doyle_1Sir Arthur Conan Doyle_2Sir Arthur Conan Doyle_3Sir Arthur Conan Doyle_4Sir Arthur Conan Doyle_5Sir Arthur Conan Doyle_6Sir Arthur Conan Doyle_7Sir Arthur Conan Doyle_8Sir Arthur Conan Doyle_9Sir Arthur Conan Doyle_10Sir Arthur Conan Doyle_11Sir Arthur Conan Doyle_12Sir Arthur Conan Doyle_13Sir Arthur Conan Doyle_14Sir Arthur Conan Doyle_15Sir Arthur Conan Doyle_16Sir Arthur Conan Doyle_17Sir Arthur Conan Doyle_18Sir Arthur Conan Doyle_19Sir Arthur Conan Doyle_20Sir Arthur Conan Doyle_21Sir Arthur Conan Doyle_22Sir Arthur Conan Doyle_23Sir Arthur Conan Doyle_24Sir Arthur Conan Doyle_25GodGod_1God_2God_3God_4God_5God_6God_7God_8God_9God_10God_11God_12God_13God_14ObamaObama_1Obama_2Obama_3Obama_4
AnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAny
1be435365461472398456490507414427433437417496515422367414393445383456458484410423464459440481482417432435443484481523478501451445484433544474468480437402403424445378399413450384440408358516517503559549506400476549565521510521524550521504506446467495500480479472508428477492443449444460492448476435472430474471510475435462457455436487411449494439488468453437455367378380364347372350328347342334346340296352332301337338366297379357409373391407357381380368418381408378380426398361381426426337295553503563521488511418474499540603588563581523471454457453429513479475462483449442401426356313431527463379295322346320362409319353274276283
2have1121019410410989112859511295131144131167101101137931189113216315817016018325018219919817119422520020720822224823919425122024424922126825018117014116516414516019220118118817716019621917715617118822021821122120118222621118819921322321825423824826321219823620029324415415116419117919216616915117021117525016917317822319420721221122619118617718716118615716319016416217822720117214815320913217412217219315516517720716218318417618615920517318318317620716316918519214916717218019517819815625122227628524622720121720424423928023320719317618420821421320620224019421025411215111410961678844135127150129130116154213255196191277
3say1531201351181171641771811426580769274866660524797464473987844598265111996863551149712410414912814011412897114124102631229412512313079121109871041391166012612414016413188113161122156150139121139158891531261311399914110610314115282123121731058111312513291117158147112971121149913612414314317613011878100120154938613611342721402843261527311843152033183241282115284337194146213243365449263938303538524145348183664769805579747180879697885457704045889176827422176232230161623743551537360111852182191318101615
4do13612216716812817918121919395134941291348938496638493575861279358531124493605859436291909711870757597829111814471406964928553719155781151064591968412074597280577797987890959987948168988680778410646588951116113981158178140115112951039910386112751331331231011081191121011136164729720242829424725142733273419102135201916201647574221425437354761405142485744436253462727758196107678147506664691037867112543337473761566042594452466075374043514762726865767667828473106
5go1089798888176106859036655380635432213933332935435961293624314152304025415667606946494961415795668217192636273022331836284235486353537371727142585849633260654356395661375230654154304546304536384145424821452748422931554638454041466159493829385518134141725151583125141379161618813220191116111516342020171916182540404433232222293338282436111829362137132221151015231914191524163165797013031162438627254771021271031523141326
6come266358646144576455324642445359342234453626273034352933273732403631233245416044455347514761484552363225442631272827342730474742464952485247503051393231465240302941453640384235373949384137423340384927435058533245294829353741403847463544344645161821193126223017382316242314262022172111191520149202434222621231822393737313044271834404444374653333833294541543231363440352820463734345896124774113242377383896771261391531162017
7see4271575745718457472826264440402013321837221529223117353324295028184033654335343751503254494756731535413116252134291932253031343044423133425644514647385440413832645030454461245642492012282420422332273038143028292431373533373036314136332816831315142427283488820249161216182113171024262113211810271425301716313338395641492420284646632848352947473631444032264149604531403736523934345129219533120102392826141371516
8know355039292138455546273734273438221318938171036385020293422633629423328383744594436583942493867452027303746182631292744383546383044464937514354414355246149603433625257574151482937433634474942263442475241547749332626545441273536454530303843341812131615242087191112139911793141110202210181971819162513231822182325211987323826542729223121372238493521281118185221329171732197222010210761518813164533212923
9make4841364037443949432725253824202728264227252438323128302526452819292141332638314043383451422925343425302424353131282430222641504446323537444533413949402824294043414353383539313416253025323729482637302233254229353829394331383228364144243434282431222926232225241823191212141424279253120312741302933422944272728213328385634552820261725212418192421272230272726293433272623191521241957333626192965727333531422228324848584368
10man41274643502818102220141212132111231213812171332402521233935364031366225142113301924162033121830202437282233474144373131621272299282172316222622101220101713111491613917231417642130354045391726441277233645232045451436141442272227353745374024574530384439385128342321341931363731291927235443364029333533402640242423335071385047454755485034486356517891644324152720332234374144784374594113594860476875401771255118122
11look21422229272628383230152325182017101110181381122133551464941522532294166513847403851505566465243233049483037353722342747305540503551334252364246404922383834312936473333263325393142453238252936244629612156304335392750443758324743332822283655122430332226222213151837141114101923819112623292028201524281917271927211930292553321511281721242016203128191421203016162323241423302421201371053520060432647412510
12take5643422836423727472832302135252825212128172719213224322917214221242935392744433838304044603133393426272332341734232034342929275331333335313830283536383333283638443225392346203215273231483543374236323040423631243342374739414233283428131831291212112216221711121317108814141616141014301422269162019262519222316293426264020101528212518202415222533202632292822201023132016252220145471414538463843444939433554503935162218
13little14242424272318259272220191720282721232020181811821231638183114922142213827303116242583322232618192314242321241910139304633346835262833266456153352462937364045462424352116352421262932181123653033593719272430353628322142315042112219211726234021344520721244911168519196101913373530301418222819293927192028732830418330271891081929222219259151012121012917131522181113103512321002112331414132
14time47394734343534373924393829482619232631192625272812261928212235242837382016262832294037312230332918242631212935193527213424252920183638222128343324261917252725242334312922273132351916201719182917242416151924181430181628241419172131232330433118138111515211210719991420711188182019119815991112910201315262519182212612171821171826191619252316222310171515232519282123253081112943156141914131316183926252924
15hand1881110192521198202410101421192692319212312268394826202735311233283130233618353233433026392627162429163922212027212820161920252219173324203519232530322226183438213530362620181825102015182526322829173213393226322934262831301830343419293813111418322818202026221182417411161527916101712111716171514102020212619923182422991519172620293025171710343522191418301715271518212427316659252521191828483445654526356
16think282527121524493826151612332021107101214914222627892822726209113232364342292231432122323628181411252571731201431201132413839502932364438353145334244493539333845323034502229371224194314182639292344225213172917242146232952222624182730214449391047588344137366416874201213716281718175141416161921515291625401621102030321823273115141323331314242419179104010001220022510479
17get14197112877690121116134404837436464106142114155343564621192812234811845252222343331232719492327291814212518281712225242418922302522192819161322211616111922152422151616821149121122273510263129221717122823212629183728223016202715149151812221210120242211125150333162991267421142012111553271814181417752222312726221921525331418149148135879115174442422431513638
18old42361735201935291610141411152514842131171522272492112712212723691421221381921918825162129309348353115202316272425121720242322202718312516112022231224221217201019342018393016171521433413533167222530242311261312221026162129153819491713352517334310252218355628374683402935573819193230423717924113217206332815221271791281498917107412615638141512131818152613731234653214961043153
19other18818232424169182116221920152427192111162817219301522241715191716122214961921151222191716101912181916201618162018223315141114121113201718914131319151652011151418281015614182316161627219181720132111152114810141291113126122013252130213222252818152213172624211617222525132429221614251417151631182637181928302625292123171320162015291927171520292771222182121121722161019568627101245610112113101512131518
20good2941333522282723212117121419162513211933191821202111172413222181319817101725152514131420261014181817241611122114162775201324191691020181623252517252120249191619131230191119208625221212924122221171927182010131521122627241019241733181617523241419171161264867118196111010108412814171111101451813211627251111161071471187151411172221196107941551199719101724117513815978912141312
21tell47303942203456452416351623183791441167124125236111161815138611122414191717282213152136247891417141312131623271314813262314131216151823151021181618202016141614272119172514111411232371620172217104111285191322231425625241015121702758151117101254788106111135416951010715511133017241526149101619342910138149231518371310114756134121710161023191010226125128231285611
22eye44598585516101720121019221618142413778232014221214157151818171318141620151991519919182715221223152729131619141519282072315617188111515121811158261923151610161418211228171611152015201425133019232217411923142449231919151714719251617281013161714181713721998104161518181112157520151913151215151120121624161612171924171781611112091718121312169156791214131310114411131814241210041
23way3027352433412948291217102215331123141861216201421222224212910129151815212220262222231023152916122412131820132510162113131217221520152119121111121412151418191619171125121810111113151713181623121816111930332371017182316815122817141582116854266654364524712633121211108105896101588913131722137777521171920181518161421161814152810112389161221201114148401118152322911141510111718
24give1710127152425241523181515151413171813141617231615111135148128112118141613182815202414181213201481810219131611121317142412212925201513152018211116119101526321521612211392018151329720132319191712241414231423141318201214301910141020101021141291213148786915511201011171220121514188131015141417171617102014141011231520161920202181916261523252410151811131214151111297339272281425416343396923351619142521
25face6519210731161715131112231610182016851013202611331527181813611148141219121118131311151416248111522121312112017171210182171822142027141171824111413242118201518131732019101761913311841313211210102117191416201123162416151222304171171313162025141031211915813125102121619198515981019591561111131217141441921278222618171710132828211010241213161516161972712161016162157411043117264
26find2128815109151315715221937379816141818131524248118138811910181015137211613121810181919826151134134129761114201110713919201620101918201319152191819222014132322278141514131756392112211511381916149241313251618912111312126710126510131612146981081825101218996131111910111471312121621131017920201222213013173218111832171415262019198101316201016181791020224174272187452
27day222551916181413817881833112015299201725161422914251917332314291213161516161311152011191718101294999202291312121217152034191615211492223182519171518141316102113131311159931786115104115248231216119169612131112161026191915151010151715815121119799131315171113237121315151371211141251312161112111110131612251091812914691613712281592116416251319703933713134745631776974484963151614116
28own924576852944104581586872851281513201016121217115911111215206201220201377558867918720131315171910816121581715714111711191614108141617191113181710162210121715151312142321101018131911171013141716191721111717202719311923122131232912918152012212624112117143227231223222225172723161010161723142114231612141112510151119178175101413171619620174315121347363336510111510
29head1014231413231010101317171667162111121223721981830111217132683022822192116151312131482215251821222919191441712171525151422261232172716192213201414231717201021151311691817181423112016181510291720416149242217161319152317271914132271613894111214128797105141410484370212473710510922181514885111175410151213101179161281715172718111461317221569232014532121113501001
30great011221200198101179261811210259121661311132669201712146108157118161191111132816211512261015291815107131081515161721161710121616917131314121217112414181610788675941199412101169131374966851318251557612106126471710667914108814819111318161911191971919152525281834181712131491199191815161266816282122294419241316181021788634092213142692273759
31seem53111134106151415221212910215121034674677581051212221567131389111312101539117107111115138141415181515134141611161391399977781713138411141552010186121516111511149208568101610121215781197136181822161515181517196131320151117151318111915211921181821192321202715151017201925231818191613121648910171317718101414131032238119512000000002010010101
32such810117769667410106771310681276799916171011172111711719712131510101071352810813613131261517121711121015951512111589148713192011162311139151316128119610105616118121367613581196181310111199182316162915171619136232592022191421181917172416161310241822231922111214217141413156966918410119410101061711121691261118414835181352016013321013
33turn96851113141113211712119191071516181777161281922141310151918151610121212913816131091981223211315231711181825191118161014141212176108161111107981412101211101211117276117132012871382361762012152115191819111523101111204928894891010189945859567137121066106493615889109813231020129101210914118415131112116131512141412613436856301314151113161847435
34hear1930203591672320513111015151064239125516848999141012422106111310151651242021431472217981722192519189152610111789910916131015111111712811151566161012556101010677131371620413321672010111112169121111239513105148221541161669481611155856107812339201112810915991624265221291421143222148113111681310919181710191310721414351118771963123
35leave8941181791113234915198118146814451413216147129161596981413111913111313211749551710124141315202381112111712112017131719131011179121514137131115111817167811102112011841619111585181010151411101412239127842649171361512951661181013613566663141261157101219912181491191310151710131511101914132116156131013131310111010715571482445350915516710539
36put23241214818101623812188865941166141591552796661461222151114161421141921281136161113712161481718146216101792118211391661412121781715619231318101871014141320166138121112181581391614101517207231215122017630155486485245512343773331367611455510793101110111051033115111071371012141191513762810613288817173015585840282111351192816151313116
37ask132112471293415342461227571271441415821141588812201522251215261618816566398686321292113159138101391411249141111171113108101091211911106171219151120188151711213531142517272924201414232117131210541038915221114161365021513533439710119661073913464101712203025161211815211726151386371512161214906510000121455715812136
38life4052622110548751105119911681749111212151614151676612538912913611117456124592051410989671117320141111128761141597141510131691113151145556104617103204171371478471011101414111011262017212222161410718149710121491611131710103016191912242424212316128538132089687948639713161012201812111010316781419612600500381215357255
39thing263126132632283832131615192817151316111414142132161149811111212119615910119813791394665489591081465121211121545142096131312111313147861751013867811613111389101612121581251111910911138111788101881475978536056121054252682747912491191011109871374616111261591109799141113831211108179121483312151611374412122428271217156116921
40nothing15121622112223312067991395759746109121113118141912118914171515761012101219196496610101388164613161487151011787151110711141910121810231111691110971113101661078166718225106121415712111216101614148828810877524156367783738617129889621651186791481310111111161517155771515131010171388136449381121161002212122122433
41stand13117320127135121617151379165189191571591418151069410862021211479781918712846156310102131339141110610139146109116191111576615712993127799171067117214418924111161212813137101198128136227820151523207108131111104151011111366412116741999126135121389121310188101212141311791718786713101391011141258916812615141014139105105157
42young03025101121183178392113611225113211332528242911206151831264177310241636161482040152528162412916281392216101581731297774914195169167112528291221773137104419433162253127161534128233531481171615191817139312312151582682128111659435871017519510611232764421229812612131713913724741148716464601214447129
43night112422192098131225151238211743131037515131972026162092115117151410314589291914257875201381411913171114718102018125881681341717910111710122191981916164714431579538111696101620511911516151599130200172251169536376571221010120771003112071111111872899810171125816520111461013161821191412413251361107114520030
44cry912579643475101129810713114046122857151110910129810366822591471319717231512221036261821718156141521415746128711771051111171496447964511677435131310108258161018826241617250569696149538510128816593438369933476071014152510261113121013201223169610792129159521142020171431083210830114050591000100
45word74917710855108118107131058126878101391079810141210410141213101111991111107131614122010211217191071913659613103610913716910119121591814148461081271312109816151618157101915162014912820176111118457696108412477461869853610386957491259105108146107161012897511871791621149647101710313124291515111051816172897951154
46mind774895179914497891116171015107857851231741915121381010161461015912101712410106149131112510103815104201011916121191696131011111111211420912810152925841861311919101211142117111471398111120981171010541061088101384331911879855671411827885646132549414148311135712761377647655211371491002000010201201301043
47house85513129101410467722101046744172722195683515134512912416107129575137121891582688147201422159152513251012121010111213106111013121516121510465207121829381086656118825122477101110865335652263752465393814125171811112714234040177342100621661711712101115152252314154000105516468202545354244361614301312684062840
48sit11000100091481349544541167769142210101213891011118198912817161071579131213196111496151026151923331226169131610157141923121612724166111410151491414813166131041113513131010314921811111212141166481311421824515125178115643558471111810124991312919581584978255123116107787291031114548943441020011125832213
49sir303100221344902027237104211132917910002018042107214166611912828412022582313053501017271253111118228032131371614118820112867562116439134112512123913629915512284526112812620285010300064050203301900201000601112050313100010011216333120108051615210312291424023551011000100000000000000000
50last105731113171317101416181114111471710196920810121011111512861612191112975914191618151047292566109111496881091251141158981981010101168129122010118869510116995106845893713471013168211011634646837724010784887667365431068843977967867131418166121011991010121712121811161582331113180020000010000101831181512
39 / 61
first(df, 10)
10×210 DataFrame
RowauthorsMark TwainMark Twain_1Mark Twain_2Mark Twain_3Mark Twain_4Mark Twain_5Mark Twain_6Mark Twain_7Mark Twain_8Mark Twain_9Mark Twain_10Mark Twain_11Mark Twain_12Mark Twain_13Mark Twain_14Mark Twain_15Mark Twain_16Mark Twain_17Mark Twain_18Mark Twain_19Mark Twain_20Mark Twain_21Mark Twain_22Mark Twain_23Mark Twain_24Charles DickensCharles Dickens_1Charles Dickens_2Charles Dickens_3Charles Dickens_4Charles Dickens_5Charles Dickens_6Charles Dickens_7Charles Dickens_8Charles Dickens_9Charles Dickens_10Charles Dickens_11Charles Dickens_12Charles Dickens_13Charles Dickens_14Charles Dickens_15Charles Dickens_16Charles Dickens_17Charles Dickens_18Charles Dickens_19Charles Dickens_20Charles Dickens_21Charles Dickens_22Charles Dickens_23Charles Dickens_24Charles Dickens_25Charles Dickens_26Charles Dickens_27Charles Dickens_28Charles Dickens_29Charles Dickens_30Charles Dickens_31Charles Dickens_32Charles Dickens_33Charles Dickens_34Charles Dickens_35Charles Dickens_36Charles Dickens_37Charles Dickens_38Charles Dickens_39Charles Dickens_40Charles Dickens_41Charles Dickens_42Charles Dickens_43Charles Dickens_44Charles Dickens_45Charles Dickens_46Charles Dickens_47Charles Dickens_48Charles Dickens_49Charles Dickens_50Charles Dickens_51Charles Dickens_52Charles Dickens_53Charles Dickens_54Charles Dickens_55Charles Dickens_56Charles Dickens_57Charles Dickens_58Charles Dickens_59Charles Dickens_60Charles Dickens_61Charles Dickens_62Charles Dickens_63Charles Dickens_64Charles Dickens_65Charles Dickens_66Charles Dickens_67Charles Dickens_68Charles Dickens_69Charles Dickens_70Charles Dickens_71Charles Dickens_72Charles Dickens_73Charles Dickens_74Charles Dickens_75Charles Dickens_76Charles Dickens_77Charles Dickens_78Charles Dickens_79Charles Dickens_80Charles Dickens_81Charles Dickens_82Charles Dickens_83Charles Dickens_84Charles Dickens_85Charles Dickens_86Charles Dickens_87Charles Dickens_88Charles Dickens_89Charles Dickens_90Charles Dickens_91Charles Dickens_92Charles Dickens_93Charles Dickens_94Nathaniel HawthorneNathaniel Hawthorne_1Nathaniel Hawthorne_2Nathaniel Hawthorne_3Nathaniel Hawthorne_4Nathaniel Hawthorne_5Nathaniel Hawthorne_6Nathaniel Hawthorne_7Nathaniel Hawthorne_8Nathaniel Hawthorne_9Nathaniel Hawthorne_10Nathaniel Hawthorne_11Nathaniel Hawthorne_12Nathaniel Hawthorne_13Nathaniel Hawthorne_14Nathaniel Hawthorne_15Nathaniel Hawthorne_16Nathaniel Hawthorne_17Nathaniel Hawthorne_18Nathaniel Hawthorne_19Nathaniel Hawthorne_20Nathaniel Hawthorne_21Nathaniel Hawthorne_22Nathaniel Hawthorne_23Nathaniel Hawthorne_24Nathaniel Hawthorne_25Nathaniel Hawthorne_26Nathaniel Hawthorne_27Nathaniel Hawthorne_28Nathaniel Hawthorne_29Nathaniel Hawthorne_30Nathaniel Hawthorne_31Nathaniel Hawthorne_32Nathaniel Hawthorne_33Nathaniel Hawthorne_34Nathaniel Hawthorne_35Nathaniel Hawthorne_36Nathaniel Hawthorne_37Nathaniel Hawthorne_38Nathaniel Hawthorne_39Nathaniel Hawthorne_40Nathaniel Hawthorne_41Nathaniel Hawthorne_42Sir Arthur Conan DoyleSir Arthur Conan Doyle_1Sir Arthur Conan Doyle_2Sir Arthur Conan Doyle_3Sir Arthur Conan Doyle_4Sir Arthur Conan Doyle_5Sir Arthur Conan Doyle_6Sir Arthur Conan Doyle_7Sir Arthur Conan Doyle_8Sir Arthur Conan Doyle_9Sir Arthur Conan Doyle_10Sir Arthur Conan Doyle_11Sir Arthur Conan Doyle_12Sir Arthur Conan Doyle_13Sir Arthur Conan Doyle_14Sir Arthur Conan Doyle_15Sir Arthur Conan Doyle_16Sir Arthur Conan Doyle_17Sir Arthur Conan Doyle_18Sir Arthur Conan Doyle_19Sir Arthur Conan Doyle_20Sir Arthur Conan Doyle_21Sir Arthur Conan Doyle_22Sir Arthur Conan Doyle_23Sir Arthur Conan Doyle_24Sir Arthur Conan Doyle_25GodGod_1God_2God_3God_4God_5God_6God_7God_8God_9God_10God_11God_12God_13God_14ObamaObama_1Obama_2Obama_3Obama_4
AnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAnyAny
1be435365461472398456490507414427433437417496515422367414393445383456458484410423464459440481482417432435443484481523478501451445484433544474468480437402403424445378399413450384440408358516517503559549506400476549565521510521524550521504506446467495500480479472508428477492443449444460492448476435472430474471510475435462457455436487411449494439488468453437455367378380364347372350328347342334346340296352332301337338366297379357409373391407357381380368418381408378380426398361381426426337295553503563521488511418474499540603588563581523471454457453429513479475462483449442401426356313431527463379295322346320362409319353274276283
2have1121019410410989112859511295131144131167101101137931189113216315817016018325018219919817119422520020720822224823919425122024424922126825018117014116516414516019220118118817716019621917715617118822021821122120118222621118819921322321825423824826321219823620029324415415116419117919216616915117021117525016917317822319420721221122619118617718716118615716319016416217822720117214815320913217412217219315516517720716218318417618615920517318318317620716316918519214916717218019517819815625122227628524622720121720424423928023320719317618420821421320620224019421025411215111410961678844135127150129130116154213255196191277
3say1531201351181171641771811426580769274866660524797464473987844598265111996863551149712410414912814011412897114124102631229412512313079121109871041391166012612414016413188113161122156150139121139158891531261311399914110610314115282123121731058111312513291117158147112971121149913612414314317613011878100120154938613611342721402843261527311843152033183241282115284337194146213243365449263938303538524145348183664769805579747180879697885457704045889176827422176232230161623743551537360111852182191318101615
4do13612216716812817918121919395134941291348938496638493575861279358531124493605859436291909711870757597829111814471406964928553719155781151064591968412074597280577797987890959987948168988680778410646588951116113981158178140115112951039910386112751331331231011081191121011136164729720242829424725142733273419102135201916201647574221425437354761405142485744436253462727758196107678147506664691037867112543337473761566042594452466075374043514762726865767667828473106
5go1089798888176106859036655380635432213933332935435961293624314152304025415667606946494961415795668217192636273022331836284235486353537371727142585849633260654356395661375230654154304546304536384145424821452748422931554638454041466159493829385518134141725151583125141379161618813220191116111516342020171916182540404433232222293338282436111829362137132221151015231914191524163165797013031162438627254771021271031523141326
6come266358646144576455324642445359342234453626273034352933273732403631233245416044455347514761484552363225442631272827342730474742464952485247503051393231465240302941453640384235373949384137423340384927435058533245294829353741403847463544344645161821193126223017382316242314262022172111191520149202434222621231822393737313044271834404444374653333833294541543231363440352820463734345896124774113242377383896771261391531162017
7see4271575745718457472826264440402013321837221529223117353324295028184033654335343751503254494756731535413116252134291932253031343044423133425644514647385440413832645030454461245642492012282420422332273038143028292431373533373036314136332816831315142427283488820249161216182113171024262113211810271425301716313338395641492420284646632848352947473631444032264149604531403736523934345129219533120102392826141371516
8know355039292138455546273734273438221318938171036385020293422633629423328383744594436583942493867452027303746182631292744383546383044464937514354414355246149603433625257574151482937433634474942263442475241547749332626545441273536454530303843341812131615242087191112139911793141110202210181971819162513231822182325211987323826542729223121372238493521281118185221329171732197222010210761518813164533212923
9make4841364037443949432725253824202728264227252438323128302526452819292141332638314043383451422925343425302424353131282430222641504446323537444533413949402824294043414353383539313416253025323729482637302233254229353829394331383228364144243434282431222926232225241823191212141424279253120312741302933422944272728213328385634552820261725212418192421272230272726293433272623191521241957333626192965727333531422228324848584368
10man41274643502818102220141212132111231213812171332402521233935364031366225142113301924162033121830202437282233474144373131621272299282172316222622101220101713111491613917231417642130354045391726441277233645232045451436141442272227353745374024574530384439385128342321341931363731291927235443364029333533402640242423335071385047454755485034486356517891644324152720332234374144784374594113594860476875401771255118122
40 / 61

The following transposed version will be more convenient.

dft = DataFrame(
[[names(df)[2:end]]; collect.(eachrow(df[:, 2:end]))],
[:column; Symbol.(axes(df, 1))],
)
rename!(dft, String.(vcat("authors", values(df[:, 1]))))
209×51 DataFrame
Rowauthorsbehavesaydogocomeseeknowmakemanlooktakelittletimehandthinkgetoldothergoodtelleyewaygivefacefinddayownheadgreatseemsuchturnhearleaveputasklifethingnothingstandyoungnightcrywordmindhousesitsirlast
StringInt64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64
1Mark Twain435112153136108264235484121561447182814142182947430176212291005891982313426151301197781310
2Mark Twain_13651011201229763715041274243243982597368413042710528252141310630924203112113241475105
3Mark Twain_24619413516798585739364622422447112711217183339535121854231111182041215261670222945037
4Mark Twain_3472104118168886457294043292824341012873523354292479151951421175351114122132232519518130103
5Mark Twain_43981091171288161452137502736273419157620242220833152101671323711988462611201020779120011
6Mark Twain_54568916417976447138442826422335252490192428345412410918623146131617187232221211997591213
7Mark Twain_649011217718110657844539182837183421491213516275682925715148102109147910122282372861017100217
8Mark Twain_750785181219856457554910382725371938116299234554824313135100661123111691383113113489140113
9Mark Twain_8414951421939055474643223247939826134161821245291511582100161320132331032205112359100317
10Mark Twain_94271126595363228272720302827242015401021211616122316717913195721528451361282451449410
11Mark Twain_104339580134654626372514153222392416481416173510171817158417814417133121416716357104614414
12Mark Twain_1143713176945342263425122330203810123714221216171015152284171015101211418581591711558978916
13Mark Twain_12417144921298044442738125211929103343111914232022151319181016112210111098371991571210117713018
14Mark Twain_1349613174134635340342421183517481420641520191812151511373346712691515845281313838188224211
15Mark Twain_1451516786895459403820322025202621216425151637103314123711579127191519621179732112109109014
16Mark Twain_154221016638323420222711172828191910101424259191113239208162697101085410155991797111052711
17Mark Twain_1636710160492122131328121025272326768271314222317168151521181013761196513716248131644214
18Mark Twain_1741413752663934321826311121212691014419214161418101629811112101548412111655131010176437
19Mark Twain_18393934738334518942211021233123122121211911181813181496122156162314112911918113751075717
20Mark Twain_19445118974933363738273818282019191414311133614614201820812101281896679147931013815441010
21Mark Twain_20383914635292622172512131720262191517161972412161618177232510121712865111441963111210411419
22Mark Twain_21456132447535271510241782718252314531528181213161781325287937751414761461511746717626
23Mark Twain_224581637386433029363813111918271222432217214172023515165211246754151282110722508827719
24Mark Twain_2348415898127593422383232222111282626562721202571416102414129166716165971732915515475227120
25Mark Twain_2441017078936135315031401332812827462492123821151324228867912814151441612911368719618
26Charles Dickens4231604458292917202825352421263982193011623221208915181349841354911111413191108593210
27Charles Dickens_146418359533633352930215132231948919211517112022112611141330116919821271411413182172135614912
28Charles Dickens_24592508211224273334252346291628262828122224111424131182520111371622969151291115132029128221710
29Charles Dickens_3440182654431372422263949173821202127241362221533131910122671714914681288103268103310911
30Charles Dickens_4481199111934132296345354121182227272312172218122914158171617651013976211511146251657175101011
31Charles Dickens_548219899605240503628365242313535264211521151410827833121398111014126141611199220794112015
32Charles Dickens_6417171685830362829194025211424312082719813151212181123122620101715109141514121248915819513012
33Charles Dickens_7432194635940311842293132249281291123171387981891417817521191216681512111022111101513828
34Charles Dickens_8435225554325234033213629292237331186161961515111310291130121211184151281611884151014124906
35Charles Dickens_9443200114624132332841624135143828324591281118182161812522141271522922879962911912135101816
36Charles Dickens_10484207979156456538332566392220313225142217121815181110139862211161061512661420117101081211012
37Charles Dickens_11481208124906741433726145127131630362221141024172114141516112210157106911206151721201512410911419
38Charles Dickens_1252322210497606035443821384482623432222917141322168131511198619121181415129152161491010128211
39Charles Dickens_134782481491186944345931134743272836423413625191820131471612211577121314162251015141510814164191012
40Charles Dickens_145012391287046453744403040383032182933819151714261812211615167131212101314253117718310121416879
41Charles Dickens_15451194140754953513643193838312935223119212517162228191613201511131391511211289693143136109217
42Charles Dickens_1644525111475494750583824513016403231232115142820221512131161388151316191415981071256101071245
43Charles Dickens_17484220128976151323934165040243733432791213221523201112152012169108513192612131286861115128169
44Charles Dickens_184332449782414754425120554425314321191822141319102418182012131111101612112116971019498119917614
45Charles Dickens_1954424911491576149494233666082230224981920159231413101120149131013413281813912181292912516619
46Charles Dickens_2047422112411895484738291246313330263223251726211515181318192081112710201311861319771929107101116
47Charles Dickens_21468268102144664556672518523322333936271616103619291211191713221110139221361611919127145111757918
48Charles Dickens_2248025063718252734534304339232926282921101424916131519187151315519141716511468325911121315115
49Charles Dickens_2343718112240173615203420233426182718182919187191220148107252832834116764410714104772810
50Charles Dickens_2440217094691932352725243026182416141430121881824141621251816981214913646962487710129284
51Charles Dickens_254031411256426254130303749271926241121931817927128246952121111023757355615167131310113417
52Charles Dickens_264241651239236443137242848232331292525481924141513188154822157821225129646636519166812202
53Charles Dickens_2744516413085272616462422303214211625183516161722181011119829121013131717168128103162071414913229
54Charles Dickens_2837814579533031251835333734242939728312011141220211539619267615910146491010141317129151952
55Charles Dickens_293991601217122272126314735172335221717151612132313922497191011132381288551310882320138685
56Charles Dickens_3041319210991332834313141373421192131122018211215251312132091415111317174176998220141510112611236
57Charles Dickens_314502018755182729292844222324352020223161413271016134221842915121122141320108134011122112814136
58Charles Dickens_3238418110478363419272437342019272714251620161629161112129717181361819138215816131592212589010
59Charles Dickens_334401881391152827324430312734102121312427182723132112119132012158151825151429141443251310171014659
60Charles Dickens_34408177116106423025382231473413342820242422727161313207121317101417251920621106692817361910715311
61Charles Dickens_35358160604535473035266230299242011182533513191317176121315714121918232139513141611261032010514
62Charles Dickens_365161961269148473146411255293025163291215201414121417111215251315171198161581216112141878142609
63Charles Dickens_37517219124966342343850740274629194122171413815172412141717151018111815111099121410472119152215106
64Charles Dickens_385031771408453463030442250533320203830201124131922121020151914815121626121713611861218713101519178
65Charles Dickens_395591561641205349444446935313418253925241419262815211811201022151510101011987127109101864923278
66Charles Dickens_405491711317473524246329513368362250222312162320202921103482615131514111721101115151316201552015331210
67Charles Dickens_41506188885971483149352833333538192919221191471525771916121649141712181317410928186910251259
68Charles Dickens_42400220113727252333737214235262217322820131013232120181316123217145128112193511141312146111326312
69Charles Dickens_43476218161807147425144752312821333619272020121519152291515172116151292013142014769511392516115
70Charles Dickens_4454921112257425056434523363833282444161817181661213141921827161112179179111420810228510161091111
71Charles Dickens_4556522115677583044543316423026342038133118161517111520201417161716116101316241197916823121213184
72Charles Dickens_46521201150975851514141224628643335352225923181811202716915191013151091769116151110161461112162211
73Charles Dickens_47510182139984939464339264035562419312116142523812181420227221298816191414121311615815109101085
74Charles Dickens_4852122612178633247554922493615262345161113251511142111102314131613916131312118131018137916101508
75Charles Dickens_49524211139903231382440102238331925331620131710151211719181120169141110101211712791744139117329
76Charles Dickens_505501881589560465461281238335217304211221925211515161818251714998111511171761111113176761214138
77Charles Dickens_51521199899965524049242038334625324419231521181214112420191114179710111781111131411121712161313191319
78Charles Dickens_525042131538743404160291034282927224922121620161818911131719231371371191713413195998910102378
79Charles Dickens_53506223126945630383440173136372526351524524181119101419151617137199111215101514107710710116121610
80Charles Dickens_54446218131813929323343132938362418392422209201516151315181417147208715689712671111111111161410
81Charles Dickens_5546725413968564164624111364440233433221211192081926242114102012811141214191078186717791110121110
82Charles Dickens_564952389998614550524314473245343838151715161626173221913810121716128132310146101541071211137811
83Charles Dickens_57500248141863736305753933254631214516201419141911151818161421171323101171391517237912101521122486
84Charles Dickens_58480263106805240455738163339242935321610181316232521201910161511131112151318121051112142159141516208
85Charles Dickens_5947921210377303844413513262324223030819281214151261522211713281311151110111310119191118201661112
86Charles Dickens_6047219814184654261513993346352736342134103027161812182013191144910615189161369919111491211289
87Charles Dickens_615082361521064135244831172520213126501420151921101021131413116141115126117119893581714121514612
88Charles Dickens_624282008246543756293423393216322022918611191611131713131391814131116181010116111211914881010720
89Charles Dickens_634772931235830394237161431153535182912391419171411932311181816151611101714613710761694104155610
90Charles Dickens_644922441218945494943251742272419183711301820251813202022151717105127121614171589791666156142111
91Charles Dickens_654431547351463820363064453221162512221623814211518192791018720827571312111179164410259168
92Charles Dickens_664491511051163041123425213231262010242717166111217151089161481011658201946119774892014438
93Charles Dickens_674441648111345372847323038482917201935151625142813131714322238189116111615513131711147122571496
94Charles Dickens_68460191113983642244937352535321915431021162211171829615171011666710106115111010254978128139
95Charles Dickens_694921791251153833204229402943181818142642712231616719148122071210131021320513166283613411345
96Charles Dickens_7044819213281414042264845363711292518313211223112320131361716515102010118186867215412188161110
97Charles Dickens_7147616691784538233426392442231726262934997151213311711151891651262012810910119751062962511
98Charles Dickens_7243516911714042493242371746366524323922131824162018231855151541168711111541077129119133813126
99Charles Dickens_734721511581154827274730262932302428291751712201516194610131011151677812176168221568111010129
100Charles Dickens_744301701471122143305222446130331629231733202217201119133941229911111313418111712161473716984399
101Charles Dickens_75474211112954550384133122140591517441216132122141917132111141791488131615211012647871519611135
102Charles Dickens_764711759710327581454257756423719322228721171725301221125232049122371983531571831141610613610
103Charles Dickens_7751025011299485330774223303619241352232211191013332412212421412201361611133120818913163181255296
104Charles Dickens_78475169114103423228492936433127183913212515274130231410158101610861720159144122224795151161398
105Charles Dickens_794351739986294529333545352424143217263021181119714101123101411576481625175511106137141113154
106Charles Dickens_80462178136112312924263823393330302629292414202823102321381218966620135141713111011410131021810515
107Charles Dickens_81457223124755548312629202742351832171823810522171417191613249813123218102771166416101917810228
108Charles Dickens_824551941431334629375439455037361629243711101319171823191611192213105151610152914912121201015112389
109Charles Dickens_8343620714313338353554434544472828342128261415134123141414911171316821710172471014129581614514453
110Charles Dickens_84487212176123453733413114373932242646221312212219161316916171671011152015202089158431125207129267
111Charles Dickens_8541121113010140413727383658412114282330129122323818202491013412919101471441171339814132211113
112Charles Dickens_864492261181084140303532143242421931291622112614141520111361319912618111123147131213161169948284
113Charles Dickens_87494191781194638363628144733311730522010132725241212231312141561518191110122310811721510128711127
114Charles Dickens_884391861001126147314536424328502118222726122464928141625131723671311121415211111121025118811711610
115Charles Dickens_8948817712010159464145412733344231302615166102523173024161116178810151612121710171611368201110122013
116Charles Dickens_904681871541134935363044222828112334241421121924191419161812192751111239232013148109121526172011122816
117Charles Dickens_914531619361384433302427221322233418929202410191510159161719139111012917121481687152469101458
118Charles Dickens_924371868664293428383435281819301927151513171515814121210211418791111126101110141216916118811021
119Charles Dickens_93455157136723846164334373631214329301838253312172110221126111325139111173051018148159171111661010
120Charles Dickens_94367163113975545833428455529173138211219211817141620301319172215618202381541188133132518756311
121Nathaniel Hawthorne37819042018161318243712122618134249301607810412191775182349451261864004103406
122Nathaniel Hawthorne_138016427241318151231402412231311421721172195101712152016718169524020422212255103803
123Nathaniel Hawthorne_2364162212842114132224301140814411332572542111615271622162168317787806755104
124Nathaniel Hawthorne_33471784029141924162957332221111892352223516214771019312162983468215882309646366
125Nathaniel Hawthorne_43722272842173127152645221634153231252524817612131010318101515810949229102031769105144
126Nathaniel Hawthorne_535020143472526282423302622451528901728141528691312151996151795178152278155296621406
127Nathaniel Hawthorne_632817226251522342022382217202118101331819111061216617234121816414135216871532610102258
128Nathaniel Hawthorne_73471481514153088254422117122042431517113513205151211615198862214572314514886103
129Nathaniel Hawthorne_8342153272781787243913122110207010221171641425108211241713921541103520819483827
130Nathaniel Hawthorne_93342093133313881918381513247265225136101738141315311471961021125176271116512107207
131Nathaniel Hawthorne_1034613218272523201123511817491922842217121214671016122312176231059511804107934135432
132Nathaniel Hawthorne_1134017443341416241219283710119118218266518483112112981013251845141451581658782534
133Nathaniel Hawthorne_122961221519132491312341481698323524441756211419127613991116219661315357441500
134Nathaniel Hawthorne_1335217220107231691223118814244156218713291967996202096636713111961043612110
135Nathaniel Hawthorne_143321933321914129142114145201741281668741515991877152241114110261118312635597
136Nathaniel Hawthorne_153011551835162616111434101419741313717782175889151091119568331210710177811931708
137Nathaniel Hawthorne_1633716532201620187241919161911117246221110912111310132051417148610761457413688119804
138Nathaniel Hawthorne_1733817741191822219273123166181635832586962012813121410152159137594815951668381128
139Nathaniel Hawthorne_18366207281681713393681410815614025191831051815211481318946301623103759714508
140Nathaniel Hawthorne_1929716221201321171425371910191827652913611103111025172610818195813321157111219891617
141Nathaniel Hawthorne_203791831516211101131311114132094035241114121721011244141117615311323113235825406
142Nathaniel Hawthorne_213571842847201924102029263037191616357291031612121212131188191776613517681312243517306
143Nathaniel Hawthorne_22409176435719152620311923143511108338221051511201618232141915241311661310866151036518507
144Nathaniel Hawthorne_2337318637421120212227272922309177319161041810121997173112116715675102176151810611563
145Nathaniel Hawthorne_2439115919211614131041232026308124119148118815199121471319161256633071248033711806
146Nathaniel Hawthorne_2540720541421192118305428914151120632254611101486133201821131083113164912261681427415
147Nathaniel Hawthorne_2635717346541520181929432016189171223014129125185131527216181065144419781182961114714
148Nathaniel Hawthorne_273811832137162410733361520229161394217851588151115231219182466125319986209982311123
149Nathaniel Hawthorne_2838018332353434271842402419281117793715141079139111312411211810106591212971273524011010
150Nathaniel Hawthorne_2936817643472022141929292826191215161217161710561089723719192267115724464873774856
151Nathaniel Hawthorne_304182073661202625164433192529914286931117201015101012223192323485101024921111144801008
152Nathaniel Hawthorne_31381163544017213025273517193910101772418111515151419111122772119912771124116916079811238
153Nathaniel Hawthorne_3240816949511923171327332722272020184112610519814514142510192022331099219595061257414
154Nathaniel Hawthorne_3337818526421618162328401923191320172323714111381797121751927116312362310119930567933
155Nathaniel Hawthorne_343801923948182231182126271620152151171851315917151352710151512159191061611812417943919
156Nathaniel Hawthorne_354261493857253933223340212928262614142019183012131661213239251514820911101210663511010641307
157Nathaniel Hawthorne_3639816730444037381828241934732519142062813171513171112121622251021811121078971382145121207
158Nathaniel Hawthorne_3736117235434037392338243026281991612330212415171011161610182817791218113589570151031909
159Nathaniel Hawthorne_383811803862443156255623292630182316113261615112220132111101518201410814109371412107258201916
160Nathaniel Hawthorne_394261955253333041213433254041221819152825272620131412131216143419149109513813813171101450507
161Nathaniel Hawthorne_4042617841462344491955505320831224215152925141271417101117818251389111041371385126646808
162Nathaniel Hawthorne_4133719845272227248287132103062253222111916710141711238172315131593620410919111110921516
163Nathaniel Hawthorne_422951563427221820720381515271291521223111024711149101451218623913348611125111374168127
164Sir Arthur Conan Doyle55325181752934283226501128181792977171616167234201321111318910910111091611131018121614641613
165Sir Arthur Conan Doyle_15032228381334046381747282191815161817131019165151920161411141962016155176111110671010141793314
166Sir Arthur Conan Doyle_2563276669638444626254517251021192514920734122120211212237916612241711128121618128131281173118
167Sir Arthur Conan Doyle_3521285471072844635421472118817174018121614291717162722251651113992610102076158192083782016
168Sir Arthur Conan Doyle_448824669672437282724552420191826161482071019191982110124912181051373091517102912911122106
169Sir Arthur Conan Doyle_551122780813646482918482024292620211714151113242020223091410916412221513254915123823713105812
170Sir Arthur Conan Doyle_641820155471153352219501615221929107929881718202613181115194101012117168151227101655115010
171Sir Arthur Conan Doyle_7474217795018332931243420222216302058197141715211817121212188119910101261071461791171512511
172Sir Arthur Conan Doyle_849920474662938472121483125191925302292715981881732951315991414191211397134116812153169
173Sir Arthur Conan Doyle_9540244716436334737276328332525173222171714231616191718141010161041121141489715114251077211159
174Sir Arthur Conan Doyle_10603239806921293622225619209231718311015111511141610116151112171081413111579157287176256210
175Sir Arthur Conan Doyle_1158828087103374531383051142615161023277201718112126131891176131043221921139139116991323101010
176Sir Arthur Conan Doyle_1256323396781341444927782132102234272642922372016152832161996171015221615171614101722521167147312
177Sir Arthur Conan Doyle_135812079767225440352791202912233531221227211391823281713171687613141513261011101892029217157117
178Sir Arthur Conan Doyle_14523193881122132322126643028121022151967191017142521147812161817118671512131778115146482212
179Sir Arthur Conan Doyle_15471176545415312628294316221017191421151261118152410151217828101112111361320813812199407912
180Sir Arthur Conan Doyle_1645418457331036411134241620121514135622104122810102628517211412113102818386614567021418
181Sir Arthur Conan Doyle_17457208703715344918331523109151823253187713101524201510152214166111386121287126214609211
182Sir Arthur Conan Doyle_1845321440472340601827272323172330333382195121118121991417291391316131031111131313101475110416
183Sir Arthur Conan Doyle_194292134537193545526202413132517131414214616231113192113274410121581367101061017132010503015
184Sir Arthur Conan Doyle_20513206886114283122233314201519151418151215139813168161718193261213101315108413131201721511238
185Sir Arthur Conan Doyle_214792029156192040131922231622282724141217541591215104161124231114101121231174996171013514523
186Sir Arthur Conan Doyle_2247524076601546372915343025182115249132211126161416131619141381814910816699101318143716553
187Sir Arthur Conan Doyle_2346219482422437361721372422112318191418169177121516162566161141219108127123117231314441011
188Sir Arthur Conan Doyle_2448321074591634521724412120132521178181091092111192013201318914618781481481421110129681113
189Sir Arthur Conan Doyle_25449254224431343932194420141030249131519716122011710191717105813171519148111249841089018
190God442112176526558341957781354382715265191014112927167042211341057019332571432020400
191God_14011512324679963473343771511310813610231314731218393272531971766121841229225300
192God_242611423060701245122367410411212664778171913143916173311580161314305121519141015045412
193God_3356109161751307729202659545395909362101082710971568088108151616616113815035400
194God_4313616237314121101924133824251112741142216103119601572580011184231104100
195God_5431673740161392961354613250121010108123422330362458003701850102000
196God_652788434324245157592038015210531212411460741320405314400544027110144200
197God_7463445551382330274804306190146472412522564140020452800122616315036000
198God_837913515347627731733606442141817555611184115231759001314321101221546418216001
199God_9295127736272382063547049111928243613113156374773322011435511232411461016014100
200God_1032215060725438101531684392144824210821823434176962132615110351828210410517130100
201God_11346129111687796231842753433133404141115514223911474312140011189114122711467028213100
202God_1232013085651027798224023531345029219129690248311261113715951122130159012200
203God_13362116218761271262813281776541166524613728411234749313903167528551729121497168501
204God_14409154219761031392616321254504184522101082312143532163652203181916167315110145109340800
205Obama3192131367151514454857391392524415912115161181550712467151556254205063018
206Obama_135325518822331133348114354266103131212801019771610130173101387112104001122031
207Obama_22741961084141672158812161253451113145011142414110710415131226457011082018
208Obama_32761911673132015294312522329573651513641725651115050132311135931512305441015
209Obama_428327715106261716236821018224693831812111182142610191353966521379004303012
41 / 61
first(dft, 10)
10×51 DataFrame
Rowauthorsbehavesaydogocomeseeknowmakemanlooktakelittletimehandthinkgetoldothergoodtelleyewaygivefacefinddayownheadgreatseemsuchturnhearleaveputasklifethingnothingstandyoungnightcrywordmindhousesitsirlast
StringInt64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64
1Mark Twain435112153136108264235484121561447182814142182947430176212291005891982313426151301197781310
2Mark Twain_13651011201229763715041274243243982597368413042710528252141310630924203112113241475105
3Mark Twain_24619413516798585739364622422447112711217183339535121854231111182041215261670222945037
4Mark Twain_3472104118168886457294043292824341012873523354292479151951421175351114122132232519518130103
5Mark Twain_43981091171288161452137502736273419157620242220833152101671323711988462611201020779120011
6Mark Twain_54568916417976447138442826422335252490192428345412410918623146131617187232221211997591213
7Mark Twain_649011217718110657844539182837183421491213516275682925715148102109147910122282372861017100217
8Mark Twain_750785181219856457554910382725371938116299234554824313135100661123111691383113113489140113
9Mark Twain_8414951421939055474643223247939826134161821245291511582100161320132331032205112359100317
10Mark Twain_94271126595363228272720302827242015401021211616122316717913195721528451361282451449410
42 / 61

We add the labels column with the authors's names

transform!(dft, "authors" => ByRow(x -> first(split(x, "_"))) => "labels")
first(dft, 10)
10×52 DataFrame
Rowauthorsbehavesaydogocomeseeknowmakemanlooktakelittletimehandthinkgetoldothergoodtelleyewaygivefacefinddayownheadgreatseemsuchturnhearleaveputasklifethingnothingstandyoungnightcrywordmindhousesitsirlastlabels
StringInt64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64Int64SubStrin…
1Mark Twain435112153136108264235484121561447182814142182947430176212291005891982313426151301197781310Mark Twain
2Mark Twain_13651011201229763715041274243243982597368413042710528252141310630924203112113241475105Mark Twain
3Mark Twain_24619413516798585739364622422447112711217183339535121854231111182041215261670222945037Mark Twain
4Mark Twain_3472104118168886457294043292824341012873523354292479151951421175351114122132232519518130103Mark Twain
5Mark Twain_43981091171288161452137502736273419157620242220833152101671323711988462611201020779120011Mark Twain
6Mark Twain_54568916417976447138442826422335252490192428345412410918623146131617187232221211997591213Mark Twain
7Mark Twain_649011217718110657844539182837183421491213516275682925715148102109147910122282372861017100217Mark Twain
8Mark Twain_750785181219856457554910382725371938116299234554824313135100661123111691383113113489140113Mark Twain
9Mark Twain_8414951421939055474643223247939826134161821245291511582100161320132331032205112359100317Mark Twain
10Mark Twain_94271126595363228272720302827242015401021211616122316717913195721528451361282451449410Mark Twain
43 / 61

Computing the Principal Component Analysis (PCA).

X = Matrix{Float64}(df[!, 2:end])
X_labels = dft[!, :labels]
pca = MultivariateStats.fit(PCA, X; maxoutdim = 50)
X_pca = MultivariateStats.predict(pca, X)
37×209 Matrix{Float64}:
-60.7414 9.83193 -77.8121 … 165.516 164.319 132.117
144.626 146.345 141.665 4.83876 4.48532 -40.2968
2.86075 26.2327 -21.3985 62.1869 60.0662 120.151
69.6778 63.8413 78.3785 73.6832 57.7492 76.9475
-24.8752 -12.6836 -32.0202 -28.9607 -22.7359 -45.6323
-11.4354 -6.21062 -23.8029 … 32.7799 23.1818 44.5347
8.94384 45.751 13.0142 -35.717 -27.565 -37.1215
40.1841 14.2104 7.5561 7.79548 9.50864 6.38706
-40.341 -28.3526 -16.3179 -8.18071 -1.23962 -2.80065
-22.6938 -12.4824 3.27572 5.16248 11.1488 1.68726
⋮ ⋱
-6.05136 -1.54905 -3.57877 -0.506974 0.447435 -0.537165
-9.70702 8.41345 0.581103 3.45939 -2.3016 3.3244
-0.810259 -0.595373 -2.07314 … 3.25579 -0.0607717 -0.296643
9.3398 -0.637202 -6.41379 7.87453 -0.0905966 -2.50238
-6.50688 -4.10144 -3.60888 -0.795095 4.65839 6.11248
-0.394297 3.78447 1.90339 2.05996 -2.68061 1.92713
2.0695 -0.447788 0.94063 1.51751 -3.63181 0.969622
-4.2428 -5.01362 4.58153 … -6.10315 -7.88316 2.04012
-1.61565 -0.938709 -5.43101 -1.10219 2.87962 2.44519
44 / 61

Recoding labels for the linear discriminant analysis:

Y_labels = recode(
X_labels,
"Obama" => 1,
"God" => 2,
"Mark Twain" => 3,
"Charles Dickens" => 4,
"Nathaniel Hawthorne" => 5,
"Sir Arthur Conan Doyle" => 6,
)
lda = MultivariateStats.fit(MulticlassLDA, X_pca, Y_labels; outdim=20)
points = MultivariateStats.predict(lda, X_pca)
20×209 Matrix{Float64}:
0.0425391 0.100762 -0.0443951 … 0.0635746 0.0537748
0.0476023 0.0335414 0.0323627 0.187445 0.226327
0.466552 0.428397 0.50515 0.41138 0.335156
0.179813 0.279297 0.0988312 0.0381078 0.00635588
-0.165531 -0.14778 -0.251933 0.492498 0.643294
-0.158621 -0.13651 -0.041771 … 0.00401226 0.0117214
0.0980527 -0.0823368 0.0945492 -0.0270505 0.0167315
0.0838482 -0.00578111 -0.0670866 -0.0798772 -0.0661965
-0.137871 0.0278454 0.0199233 0.0624783 -0.0868363
-0.190808 0.104511 0.0131784 -0.070426 0.0569041
0.195312 -0.0544474 -0.0184308 … -0.0425953 0.0580105
0.0908561 0.0408216 0.0966175 0.0370557 -0.0240069
-0.0429725 0.0713772 -0.015496 0.0348635 -0.0593227
0.0509686 -0.0249621 -0.094006 0.0266673 -0.0769315
-0.0148622 0.0851982 -0.0749445 0.0588712 -0.00932382
0.153117 0.0498619 0.00719619 … 0.00354118 0.00132202
-0.0555167 -0.0550209 -0.0527673 -0.0192288 -0.0232068
-0.0506115 -0.0415104 -0.081268 0.039944 0.0161483
-0.106953 0.0817097 0.0272807 0.00249176 0.0563085
0.051106 0.0218017 -0.0373536 0.0109896 -0.0964533
45 / 61

Logistic regression

using Plots
sigmoid(x) = 1 / (1 + exp(-x))
function generate_data(n, β)
k = length(β)
X = ones(n)
if k > 1
X = [X randn(n,k-1)]
end
y = round.(Int, sigmoid.(- X * β) .> rand(n))
return y, X
end
y, X = generate_data(1000, [1,2,3])
([0, 1, 1, 1, 1, 0, 0, 0, 1, 1 … 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1.0 1.0494097503674444 2.0009572322864533; 1.0 0.7605104116431886 -1.391702637348465; … ; 1.0 -0.20073759849149606 1.417554682036946; 1.0 0.42558075184382266 0.4793005492527962])
46 / 61
scatter( X[:,2], X[:, 3], markercolor = y, aspect_ratio = :equal)

47 / 61

Newton-Raphson algorithm

using LinearAlgebra
sigmoid_gradient(x) = sigmoid(x) * (1 - sigmoid(x))
function fit(X, y, n_iterations=100)
n_obs , n_features = size(X)
β = ones(n_features)
for i in 1:n_iterations
x = X * β
y_pred = sigmoid.(x)
d = Diagonal(sigmoid_gradient.(x))
newbeta = pinv(X' * d * X) * X' * (d * X * β + y - y_pred)
if newbeta ≈ β
return newbeta
else
β .= newbeta
end
end
end
fit (generic function with 2 methods)
48 / 61
β = fit(X, y)
predict(β, X) = round.(Int, sigmoid.(X * β))
scatter( X[:,2], X[:, 3], markercolor = predict(β, X), aspect_ratio = :equal)

49 / 61
using DataFrames
n = 2000
threshold = 0.25
x1 = rand(n)
x2 = rand(n)
u = rand(n)
y = zeros(n)
y[(x1 .<= 0.25) .& (u .<= threshold)] .= 1
y[(x1 .> 0.25) .& (x2 .>= 0.75) .& (u .<= threshold)] .= 1
y[(x1 .> 0.25) .& (x2 .< 0.75) .& (u .> threshold)] .= 1
df = DataFrame(x1=x1, x2=x2, y=y)
2000×3 DataFrame
Rowx1x2y
Float64Float64Float64
10.04564610.9013590.0
20.6624460.5586631.0
30.7649390.03729620.0
40.08099590.9337960.0
50.2111960.818740.0
60.9786040.4504270.0
70.675510.8991291.0
80.992890.8464060.0
90.9217430.8953560.0
100.6261550.7569170.0
110.5678550.1381121.0
120.8620630.01191490.0
130.1776210.1663660.0
140.6406640.4010321.0
150.560170.9210541.0
160.01667880.5605170.0
170.6254320.7077761.0
180.988740.06126670.0
190.6639330.4393291.0
200.1974290.03426710.0
210.8035490.9325630.0
220.6500990.07544251.0
230.8836320.6756281.0
240.05912970.3505560.0
250.1993340.2071970.0
260.8685710.4273071.0
270.146750.9615290.0
280.7619060.711941.0
290.5468670.1697921.0
300.3090440.5295661.0
310.1348440.3485260.0
320.9797810.1875341.0
330.3096750.8934740.0
340.2462080.6277170.0
350.01438330.920190.0
360.3242150.6598481.0
370.9323460.5703111.0
380.7019140.4420880.0
390.5311820.7406631.0
400.946080.176251.0
410.9005860.7108821.0
420.8846050.5831981.0
430.712980.2885641.0
440.5998010.5848131.0
450.4037730.2431361.0
460.4506480.7727820.0
470.9090620.246091.0
480.7361440.3584531.0
490.9043020.5922341.0
500.1537770.06864761.0
510.07951290.83460.0
520.3358650.4109981.0
530.883240.8189960.0
540.7834610.009430931.0
550.4952560.7786560.0
560.4927320.353751.0
570.3103020.4798361.0
580.7463790.1785331.0
590.694970.1595261.0
600.350480.6985811.0
610.2287990.05761190.0
620.4157020.1870670.0
630.5329230.02722471.0
640.5653180.09858791.0
650.3439960.1697050.0
660.5217840.9708410.0
670.9641770.642941.0
680.05079620.6263531.0
690.01871950.08798530.0
700.956130.4386691.0
710.9611910.1082151.0
720.4789890.9771061.0
730.5401020.1121741.0
740.003482560.170741.0
750.2738020.9756780.0
760.8054690.6851371.0
770.8820290.2970291.0
780.5607460.3149010.0
790.8717490.1734910.0
800.7926160.7426850.0
810.07750530.03338871.0
820.2342270.2533890.0
830.9257430.8698650.0
840.1744770.7277840.0
850.7974970.7388120.0
860.9136480.3837850.0
870.1522440.1124170.0
880.3189340.92261.0
890.5028870.3603590.0
900.5024160.3309541.0
910.6528460.393980.0
920.5006970.7865440.0
930.8287990.2052021.0
940.9831990.3792611.0
950.3673950.9425791.0
960.7128590.5928010.0
970.6667350.6227650.0
980.1521110.2308810.0
990.4961360.2598451.0
1000.4364370.8701911.0
1010.61190.9673660.0
1020.07610360.8685270.0
1030.7466380.3631370.0
1040.333670.1155030.0
1050.6935170.2633831.0
1060.3315130.02023261.0
1070.209360.4760321.0
1080.1880720.6554090.0
1090.9901310.463370.0
1100.0489770.7787951.0
1110.7818660.8473280.0
1120.3245110.8501420.0
1130.07117820.7983570.0
1140.6056070.09211930.0
1150.2953130.75770.0
1160.3942010.1566061.0
1170.9511850.5614221.0
1180.7471610.7303041.0
1190.8841790.5512971.0
1200.9902990.3506091.0
1210.4919390.6440171.0
1220.2207080.7946891.0
1230.8440990.2216011.0
1240.7933390.6462171.0
1250.2049770.5809870.0
1260.3565440.5160991.0
1270.5574610.1481150.0
1280.1551370.09881430.0
1290.6585110.87841.0
1300.7202270.8869120.0
1310.1208890.02694760.0
1320.7378450.08003761.0
1330.9076040.2724151.0
1340.2446930.7267780.0
1350.9511840.1153341.0
1360.8541530.9754110.0
1370.1488920.8699240.0
1380.2457870.07232910.0
1390.9087010.795180.0
1400.8197610.5325211.0
1410.9815790.5043610.0
1420.896830.849060.0
1430.3562650.8463090.0
1440.464680.5552371.0
1450.9932020.9570561.0
1460.1094850.8837581.0
1470.9132910.5746641.0
1480.003446480.1036271.0
1490.8638560.686641.0
1500.4808940.4185471.0
1510.2457380.8426810.0
1520.7991810.3021381.0
1530.8840180.04858431.0
1540.3079610.6713341.0
1550.3495620.8184691.0
1560.2188820.403740.0
1570.7079570.8467320.0
1580.6623350.797380.0
1590.6701440.8026480.0
1600.1987710.9553580.0
1610.3258570.08284280.0
1620.04364910.8874790.0
1630.824370.134980.0
1640.005444650.17120.0
1650.4865420.6732231.0
1660.4210040.3170671.0
1670.2922520.8568230.0
1680.2062510.5581371.0
1690.1077220.6689130.0
1700.8080170.7041461.0
1710.2464630.3570870.0
1720.2477630.6197831.0
1730.1643820.8863930.0
1740.9159450.8641860.0
1750.5315560.2535261.0
1760.4621570.01774010.0
1770.964180.2472051.0
1780.5552460.7420.0
1790.5787070.2732781.0
1800.1463310.1471960.0
1810.7984870.6385061.0
1820.570390.2675751.0
1830.9440860.5827830.0
1840.2814780.5261571.0
1850.3086530.4826891.0
1860.8873560.1283421.0
1870.7170870.4928461.0
1880.8051140.08190551.0
1890.9987970.6786120.0
1900.06169920.6491540.0
1910.6858390.5544761.0
1920.6834220.8941480.0
1930.4140530.4047861.0
1940.7548780.4171480.0
1950.8220840.4708931.0
1960.8082030.3106791.0
1970.5500990.4237531.0
1980.9871810.2667041.0
1990.1363160.9536871.0
2000.9071520.50580.0
2010.8875750.9874870.0
2020.4291590.06603741.0
2030.7458820.8365780.0
2040.5013620.9611931.0
2050.2398720.1503590.0
2060.7250220.1579451.0
2070.3746420.6242960.0
2080.4683180.2124051.0
2090.2689040.4017541.0
2100.1466070.4162161.0
2110.3557040.1286361.0
2120.02417380.05980310.0
2130.4498990.06178551.0
2140.6963180.9766370.0
2150.6660070.3634391.0
2160.1680240.02409661.0
2170.9013850.5926571.0
2180.1517320.6037150.0
2190.3354810.6105820.0
2200.2613680.1004441.0
2210.9866040.1513731.0
2220.3947290.4141791.0
2230.9780610.7789550.0
2240.3042630.183561.0
2250.3894550.7286340.0
2260.3933690.6578161.0
2270.09776450.9186090.0
2280.3686110.7084441.0
2290.7736360.8298820.0
2300.07137090.7014950.0
2310.1430260.5959910.0
2320.147060.7057920.0
2330.7245680.1236561.0
2340.8837240.740281.0
2350.44850.7469331.0
2360.40840.614881.0
2370.6874230.1624371.0
2380.3782580.7135251.0
2390.9890270.7544690.0
2400.04019920.300610.0
2410.2777690.8976950.0
2420.6318130.5656851.0
2430.1909090.7965480.0
2440.3860660.4457671.0
2450.01057760.3553891.0
2460.9624360.7464111.0
2470.3700980.9508670.0
2480.5965440.5522011.0
2490.908920.7140070.0
2500.2150660.3949371.0
2510.4712120.6534611.0
2520.1651120.6898081.0
2530.9320660.5384481.0
2540.7247590.9338820.0
2550.2881810.7203261.0
2560.6192750.3910030.0
2570.9083670.6620371.0
2580.09727990.07992421.0
2590.8784980.2383481.0
2600.579990.8128480.0
2610.9302470.6137730.0
2620.4291270.5042221.0
2630.6371610.6306641.0
2640.582510.8359490.0
2650.4308650.226741.0
2660.2906320.01823131.0
2670.7164190.1360931.0
2680.6126650.4841281.0
2690.6815280.7720520.0
2700.4888870.159120.0
2710.6014550.5060851.0
2720.5376940.8374190.0
2730.01215280.7624471.0
2740.9115010.324081.0
2750.798460.2337811.0
2760.4763840.8468831.0
2770.2142330.528520.0
2780.2929360.6453081.0
2790.3608390.3494471.0
2800.6820480.9963680.0
2810.6020570.3275531.0
2820.7112820.9233791.0
2830.03049690.6811251.0
2840.3272090.2883030.0
2850.266970.1276551.0
2860.6669490.6478031.0
2870.225630.6968250.0
2880.8018360.4792191.0
2890.2564070.6515431.0
2900.382550.8508711.0
2910.2563150.1468281.0
2920.4107470.184941.0
2930.5603430.6985671.0
2940.7420650.3275871.0
2950.4929790.4289821.0
2960.6342220.8951590.0
2970.3409520.4962451.0
2980.6884330.04594811.0
2990.1166840.01725831.0
3000.8524160.2236850.0
3010.4281090.03140991.0
3020.3888630.4757371.0
3030.9412720.2787261.0
3040.6196730.7812330.0
3050.9452690.851311.0
3060.5612030.5411211.0
3070.4376260.4240481.0
3080.3952530.4534171.0
3090.4455040.625791.0
3100.8510110.8502250.0
3110.1687380.5823730.0
3120.1057470.9482120.0
3130.1101120.7455640.0
3140.3731160.235151.0
3150.1972650.3707190.0
3160.09099410.07467330.0
3170.494170.8556130.0
3180.01866720.2572490.0
3190.8408630.7617041.0
3200.7739520.6344630.0
3210.2283540.1914060.0
3220.3829920.4668491.0
3230.6927850.6562990.0
3240.9182490.6062080.0
3250.06664610.9929191.0
3260.8731920.01496031.0
3270.3094180.2644080.0
3280.2160150.6013020.0
3290.06240280.17220.0
3300.4589190.5355811.0
3310.7451640.8714870.0
3320.7151860.2539661.0
3330.06670610.3702380.0
3340.3083570.6989511.0
3350.7563610.1731341.0
3360.1403320.4596621.0
3370.4526850.4187351.0
3380.3272840.00731821.0
3390.3366220.759960.0
3400.06243390.3292791.0
3410.5224730.819430.0
3420.6207060.3886681.0
3430.2047070.181630.0
3440.7492810.9114541.0
3450.2512270.8739390.0
3460.03626630.7519391.0
3470.7292530.9247490.0
3480.3551030.1009931.0
3490.5808720.1680160.0
3500.05556180.7868270.0
3510.9036510.3269421.0
3520.03144260.1024320.0
3530.6478020.5812991.0
3540.5296290.8565710.0
3550.2941650.9743520.0
3560.7509480.03359671.0
3570.6529680.2932070.0
3580.3985120.5698541.0
3590.2250730.4639141.0
3600.5763810.09126021.0
3610.8946180.7243661.0
3620.7226720.4127191.0
3630.9378570.09944181.0
3640.68390.03718150.0
3650.8495180.7692390.0
3660.6059550.6280341.0
3670.6730110.08652021.0
3680.8280590.3349221.0
3690.5948550.9476060.0
3700.2088970.11580.0
3710.7232010.5358630.0
3720.4286440.7806280.0
3730.6127410.1062671.0
3740.730370.6137470.0
3750.8614830.7707680.0
3760.9614040.5020941.0
3770.1349960.5360070.0
3780.1059610.9524180.0
3790.5170180.5992350.0
3800.9674270.329421.0
3810.4838490.5227761.0
3820.8790650.4953020.0
3830.8220670.9666020.0
3840.06959020.4230770.0
3850.04943460.1496391.0
3860.359310.3879390.0
3870.8761250.2442991.0
3880.3928610.7401461.0
3890.04219990.6303370.0
3900.5430070.4473821.0
3910.7062210.1354951.0
3920.9102380.3418021.0
3930.1331430.1573240.0
3940.843310.343871.0
3950.9561860.9351870.0
3960.5348160.6892951.0
3970.55490.1092240.0
3980.4652630.9221770.0
3990.03220770.8040420.0
4000.9285550.7360440.0
4010.2805450.3675071.0
4020.8045180.1434191.0
4030.1946160.8261770.0
4040.4368180.442880.0
4050.9140460.7771060.0
4060.4738580.8787940.0
4070.391270.1656931.0
4080.9446670.2366431.0
4090.03697870.758221.0
4100.2343830.6630771.0
4110.3012010.4618110.0
4120.0839580.9308770.0
4130.4892360.4777621.0
4140.401490.4571310.0
4150.3601930.7528810.0
4160.08119390.2001231.0
4170.4587220.5974971.0
4180.06715690.8661270.0
4190.2088640.68430.0
4200.9867290.6385181.0
4210.4447490.8581960.0
4220.4459850.04415980.0
4230.6624090.911180.0
4240.2952520.7503910.0
4250.7089840.1942941.0
4260.05671910.9791080.0
4270.3745720.1774521.0
4280.04657650.5215560.0
4290.9633520.2545871.0
4300.6002560.6633851.0
4310.6400460.3850451.0
4320.731140.7600540.0
4330.2914470.8270660.0
4340.1469980.07254860.0
4350.09214060.7022360.0
4360.004027220.7026810.0
4370.8863740.5529721.0
4380.8638460.6996071.0
4390.233260.4604521.0
4400.03973060.04827030.0
4410.1128550.2449780.0
4420.4991440.01924551.0
4430.9687310.6294611.0
4440.7458510.1983721.0
4450.2770430.2436011.0
4460.04174340.08824380.0
4470.6445270.2889770.0
4480.8942810.7212390.0
4490.6643830.3062071.0
4500.5395280.5568131.0
4510.5612490.4159741.0
4520.8877970.76591.0
4530.6247760.9049931.0
4540.8909310.3986441.0
4550.839630.4376630.0
4560.390680.8499520.0
4570.2505210.5497440.0
4580.6061240.492371.0
4590.9990040.1166921.0
4600.5089210.2842171.0
4610.04437350.7861750.0
4620.6860130.01510251.0
4630.3563620.07533821.0
4640.1365030.1071771.0
4650.07312010.7717980.0
4660.6008110.1083091.0
4670.7551120.4191610.0
4680.8949830.4830541.0
4690.5222020.9551060.0
4700.5579880.1980091.0
4710.4610280.4928041.0
4720.5799950.7898830.0
4730.1751470.04356120.0
4740.3953940.2477331.0
4750.2353090.3549640.0
4760.7912410.04504280.0
4770.7567950.9643460.0
4780.1586180.5501510.0
4790.4642270.4850551.0
4800.3464650.0767720.0
4810.8801590.8351761.0
4820.4596440.1218221.0
4830.2315890.9220880.0
4840.7495330.7132321.0
4850.07370430.2702271.0
4860.8863310.47831.0
4870.6642150.539581.0
4880.151170.8766080.0
4890.8515060.02718650.0
4900.8075650.3062630.0
4910.7961260.9695130.0
4920.05035890.811281.0
4930.7020130.09948641.0
4940.05977790.5199010.0
4950.4864760.05922621.0
4960.2986730.1746880.0
4970.165920.5244621.0
4980.4535150.07419431.0
4990.8845070.8649630.0
5000.4707050.1129161.0
5010.6925460.6937011.0
5020.05999820.6098121.0
5030.5053770.05952461.0
5040.18790.8080670.0
5050.9932950.4544181.0
5060.5477490.9606520.0
5070.5194530.769510.0
5080.06938920.9495111.0
5090.4538710.9324320.0
5100.5710250.462261.0
5110.4084390.2968751.0
5120.5766640.3079771.0
5130.2304950.618660.0
5140.5789870.9492790.0
5150.2357430.7264141.0
5160.6672640.1298891.0
5170.4374520.1763041.0
5180.1203830.5803350.0
5190.9199220.427120.0
5200.5176120.5632391.0
5210.9197640.2847421.0
5220.8379620.05315411.0
5230.1289830.333540.0
5240.563110.9511231.0
5250.2688780.9142791.0
5260.2496920.1129380.0
5270.6150420.7422730.0
5280.6018540.3980031.0
5290.1172890.6175841.0
5300.9510830.7337711.0
5310.4875040.5302260.0
5320.2034520.6652781.0
5330.4881220.3012951.0
5340.2949540.8131510.0
5350.979580.9656330.0
5360.9845860.7730271.0
5370.7802930.3845841.0
5380.1369570.09350570.0
5390.2193210.006940820.0
5400.956020.9098790.0
5410.6564870.6199761.0
5420.1664260.6998070.0
5430.3990230.5384151.0
5440.2048580.7682680.0
5450.5292240.6927321.0
5460.188620.5135460.0
5470.1988210.8645550.0
5480.1930810.04284851.0
5490.8245340.7457321.0
5500.7846280.1540741.0
5510.421750.006489011.0
5520.3064470.851261.0
5530.3778080.5892571.0
5540.4091680.3693871.0
5550.9163170.02393421.0
5560.4020890.3274411.0
5570.6171630.1814020.0
5580.7982740.2856850.0
5590.4779910.6088391.0
5600.1212970.2418090.0
5610.4214680.297271.0
5620.03021710.1867380.0
5630.6041040.9319880.0
5640.6461350.2335221.0
5650.6978610.6326021.0
5660.3012570.2751280.0
5670.638440.09226591.0
5680.9311330.02354431.0
5690.2240610.2789431.0
5700.7790070.3044491.0
5710.372640.5407371.0
5720.135630.2418020.0
5730.9637790.2682070.0
5740.3582810.7914780.0
5750.9595510.1206041.0
5760.4503670.7079841.0
5770.6802690.7327990.0
5780.06443490.3797440.0
5790.8416810.8702921.0
5800.7099580.121181.0
5810.4277850.8730490.0
5820.5996560.03537011.0
5830.4991710.7908740.0
5840.4046920.6131250.0
5850.5797260.5110351.0
5860.006594430.6731360.0
5870.6183160.8056870.0
5880.8990930.07157950.0
5890.7516890.3807171.0
5900.293450.8389361.0
5910.1418860.1267671.0
5920.8476830.9116920.0
5930.4488040.6750691.0
5940.6563030.9851780.0
5950.444950.4466961.0
5960.5070930.4605021.0
5970.3429730.09274810.0
5980.6095440.05728861.0
5990.2017380.216890.0
6000.778260.4067881.0
6010.9297430.2052711.0
6020.9841360.8963050.0
6030.3294460.4140141.0
6040.03633420.9827610.0
6050.1213240.7379410.0
6060.723280.693071.0
6070.2871440.8549110.0
6080.3937610.8967341.0
6090.1642630.7684050.0
6100.3046380.7563050.0
6110.3882760.5359151.0
6120.6812190.2891281.0
6130.001894770.6257461.0
6140.3749920.3077981.0
6150.493130.3492551.0
6160.7829660.787080.0
6170.07191730.617430.0
6180.4534560.5408791.0
6190.5898120.3803811.0
6200.09626680.3919850.0
6210.3779020.09967261.0
6220.8496020.9942541.0
6230.7523080.1423080.0
6240.8312040.3377710.0
6250.6919990.4590761.0
6260.3595550.6651311.0
6270.6400630.2226391.0
6280.1730960.6217590.0
6290.3491530.382090.0
6300.7199140.7026261.0
6310.1583380.9463691.0
6320.1784670.8366530.0
6330.077780.6468221.0
6340.6173070.5686761.0
6350.6676950.5945491.0
6360.4396280.5196171.0
6370.3157250.05148691.0
6380.7740270.3681311.0
6390.1052910.5619210.0
6400.889620.2872891.0
6410.1407910.3759920.0
6420.4523020.4617431.0
6430.3397980.9972630.0
6440.1775050.9818210.0
6450.1003070.7277910.0
6460.3843810.8326490.0
6470.9954450.737971.0
6480.8848580.7511730.0
6490.8053040.001659891.0
6500.9829570.5193751.0
6510.7994070.5867971.0
6520.2740970.24881.0
6530.4897220.6643511.0
6540.8010250.9562210.0
6550.09770060.5189751.0
6560.5398960.9211630.0
6570.1535130.9651831.0
6580.5499420.5220281.0
6590.4637160.9211661.0
6600.4760210.5452871.0
6610.7611520.7032171.0
6620.1340890.9332891.0
6630.5586450.2737021.0
6640.9655010.9782721.0
6650.4336070.9741930.0
6660.2896810.4030821.0
6670.9353690.03089591.0
6680.1505010.4168810.0
6690.3708340.7207651.0
6700.006707160.6287321.0
6710.7861370.1753421.0
6720.1062020.4006151.0
6730.9023790.7534590.0
6740.79680.780470.0
6750.3852350.7068660.0
6760.1541140.9346110.0
6770.3302360.1663660.0
6780.6006240.0694251.0
6790.03969350.2045950.0
6800.9690880.8419960.0
6810.07131320.4743370.0
6820.5983460.02593381.0
6830.5006390.4067021.0
6840.6046620.5522081.0
6850.5213850.9835390.0
6860.3911890.8463940.0
6870.08109570.8245371.0
6880.5791790.6700120.0
6890.7742210.2858511.0
6900.3835460.4081621.0
6910.9930030.1668741.0
6920.9616550.8686631.0
6930.9768010.008147121.0
6940.5618620.8371720.0
6950.3969360.29481.0
6960.5186670.31451.0
6970.03296340.0007923510.0
6980.2959740.2200241.0
6990.945130.03211711.0
7000.1995160.9212170.0
7010.3327790.2482911.0
7020.2795730.6566771.0
7030.2175670.4062090.0
7040.4741390.7057481.0
7050.7087920.2621711.0
7060.009470320.3288110.0
7070.4688120.6182470.0
7080.9290370.1193331.0
7090.8140560.7730180.0
7100.3423230.007358581.0
7110.2477020.3253930.0
7120.6084550.1815920.0
7130.01690940.9076530.0
7140.4948020.9903870.0
7150.8541150.1501271.0
7160.3615310.9221130.0
7170.3864090.7361221.0
7180.2148080.7990340.0
7190.923740.3789621.0
7200.2295650.821250.0
7210.1040860.7751530.0
7220.7741770.5925961.0
7230.8861840.3779021.0
7240.3243970.06921460.0
7250.8247880.227011.0
7260.3527260.2716211.0
7270.7391030.4474551.0
7280.5569770.3329840.0
7290.9644110.1337311.0
7300.2096780.06807130.0
7310.8153180.6605091.0
7320.4728055.04253e-51.0
7330.2790490.7719730.0
7340.8890710.1264071.0
7350.2233210.05797241.0
7360.5562290.6794621.0
7370.4504570.5627540.0
7380.4707410.07125930.0
7390.1054420.3813851.0
7400.3020550.9848451.0
7410.807920.5107461.0
7420.2256660.1541870.0
7430.04016750.9597750.0
7440.5244220.43291.0
7450.2688790.7266071.0
7460.4234050.7040151.0
7470.5149190.4287661.0
7480.02899050.7182071.0
7490.3059430.1278141.0
7500.1614930.4460551.0
7510.5569220.6703111.0
7520.6814560.2894110.0
7530.8835630.103921.0
7540.7862170.7419731.0
7550.4218910.850990.0
7560.1144110.1835590.0
7570.5490790.09425061.0
7580.4533340.07778091.0
7590.9653950.00940180.0
7600.3479880.9111851.0
7610.7494680.8059160.0
7620.7751620.0007767941.0
7630.03133880.4903461.0
7640.4246190.3164971.0
7650.7171950.3034391.0
7660.2029350.6223141.0
7670.4460020.5958011.0
7680.9620260.318981.0
7690.9572960.04602421.0
7700.6517670.8546950.0
7710.5600830.09583811.0
7720.2335520.3078520.0
7730.03813620.5527710.0
7740.5296420.8043311.0
7750.5434640.658471.0
7760.2955660.4327131.0
7770.8264750.4202260.0
7780.4557220.08944131.0
7790.837160.9933760.0
7800.4974910.2915671.0
7810.9070510.2987941.0
7820.1095470.8517170.0
7830.1034540.608290.0
7840.4997010.393051.0
7850.7807090.4982861.0
7860.946130.8992720.0
7870.4628540.3817511.0
7880.3846070.5649751.0
7890.12150.03943980.0
7900.8317550.2091751.0
7910.04327690.09538830.0
7920.9344820.006013991.0
7930.455830.8669340.0
7940.8976920.416411.0
7950.4866590.06831211.0
7960.6888530.8964571.0
7970.2310060.01463910.0
7980.1951830.3905190.0
7990.5916230.04738461.0
8000.3717690.7607990.0
8010.6122140.291081.0
8020.03748440.3658221.0
8030.6384920.3175131.0
8040.9102680.03015931.0
8050.2921380.3648821.0
8060.5023530.9063560.0
8070.9814750.1118951.0
8080.06235170.03916390.0
8090.8415680.7825420.0
8100.7228250.8363750.0
8110.5271330.6692191.0
8120.4858430.3606450.0
8130.3774520.1686721.0
8140.3894860.6953371.0
8150.4502020.7079411.0
8160.5121280.05839821.0
8170.4355810.6312821.0
8180.3679140.508411.0
8190.6699990.1573021.0
8200.2627390.4511981.0
8210.6154950.01363440.0
8220.153680.2702831.0
8230.409280.05636121.0
8240.006854690.6079660.0
8250.7434380.4616150.0
8260.09112030.6712541.0
8270.2751640.6269321.0
8280.3096590.4740661.0
8290.1057430.3814290.0
8300.1660140.2391581.0
8310.01710590.3127950.0
8320.8195370.2995781.0
8330.40230.1870971.0
8340.8771990.9011890.0
8350.8723590.2219031.0
8360.8042020.1906561.0
8370.1843490.1876750.0
8380.9410980.139621.0
8390.8976670.2743461.0
8400.145990.5679930.0
8410.3437360.9079060.0
8420.03883550.4841161.0
8430.9643230.8166910.0
8440.5181050.6887321.0
8450.3262150.137580.0
8460.7132590.3716111.0
8470.7480730.2148411.0
8480.7052310.4027850.0
8490.7649690.2194691.0
8500.3781930.03729770.0
8510.5265480.1767671.0
8520.6327720.6646181.0
8530.4052460.9525140.0
8540.5874190.5149430.0
8550.1636380.3105160.0
8560.2372230.2676340.0
8570.8240480.6883771.0
8580.145930.9636460.0
8590.6391690.02525861.0
8600.159190.9940681.0
8610.7634110.329321.0
8620.9773240.4044971.0
8630.708110.7496260.0
8640.0859940.5174010.0
8650.582090.9088820.0
8660.3291960.6274161.0
8670.3155150.9979570.0
8680.188010.7487490.0
8690.7376570.08830970.0
8700.2405910.05099010.0
8710.6112330.7879460.0
8720.3396020.096861.0
8730.712070.6361631.0
8740.7984220.3901760.0
8750.4692140.6182291.0
8760.3375510.01420080.0
8770.1183310.5812881.0
8780.3309510.6641331.0
8790.9572180.9045051.0
8800.6365210.4045310.0
8810.6486450.7820550.0
8820.3463810.6748671.0
8830.2131250.1661750.0
8840.5204460.1173231.0
8850.4837850.7918620.0
8860.6026420.7743630.0
8870.6570610.4551161.0
8880.1138650.7083481.0
8890.4814550.4727921.0
8900.2728940.8277021.0
8910.6883620.3236851.0
8920.6914040.1284681.0
8930.728990.9803410.0
8940.1209180.6355990.0
8950.4234950.3993891.0
8960.121760.2423261.0
8970.1560180.8514910.0
8980.03089650.05596470.0
8990.09123820.7300840.0
9000.4564770.1921361.0
9010.851190.4942950.0
9020.03508930.4435060.0
9030.4053480.5124391.0
9040.6177990.4423071.0
9050.06892910.4733341.0
9060.8731350.8147780.0
9070.0501830.2739350.0
9080.5545760.461920.0
9090.4313090.8845451.0
9100.2297930.1464730.0
9110.182590.4917990.0
9120.7473420.3082731.0
9130.2419410.0003627110.0
9140.264620.995591.0
9150.4620310.4474211.0
9160.7674360.4845971.0
9170.7407520.4677011.0
9180.208790.9488791.0
9190.1095580.4605211.0
9200.8638890.1450430.0
9210.5745010.03539961.0
9220.9705950.1035691.0
9230.5689950.3811381.0
9240.4559480.7689371.0
9250.1840630.465980.0
9260.9615620.8651530.0
9270.2394750.375250.0
9280.2222270.2455851.0
9290.06395320.500980.0
9300.8543860.0424391.0
9310.5980320.306881.0
9320.7514250.657521.0
9330.5989760.3740791.0
9340.2142180.6019041.0
9350.2211040.6358180.0
9360.8229370.2748011.0
9370.1143060.8947530.0
9380.3742670.5972161.0
9390.5125950.9456411.0
9400.7793980.1868061.0
9410.5905340.2539131.0
9420.1133770.7010840.0
9430.4499130.1044081.0
9440.8824230.9099650.0
9450.8623370.6910941.0
9460.2909360.2520781.0
9470.7400450.7757440.0
9480.3473470.8685420.0
9490.1420450.8286640.0
9500.245130.06300760.0
9510.008045390.7620941.0
9520.6043820.2651451.0
9530.1995990.2962160.0
9540.2302140.6425481.0
9550.2214610.809760.0
9560.4173440.7640770.0
9570.8664690.06643481.0
9580.6304660.1832121.0
9590.1405520.9923740.0
9600.4490410.8892460.0
9610.7630440.3614181.0
9620.3633540.1381091.0
9630.9819820.5673061.0
9640.7412340.2487020.0
9650.9987480.6593451.0
9660.1857620.2665980.0
9670.8998540.8578930.0
9680.5295960.5519581.0
9690.7476210.4235561.0
9700.4818850.5027561.0
9710.3476360.9109310.0
9720.5852190.0747371.0
9730.03414940.4566420.0
9740.5323470.5832140.0
9750.1878720.5632310.0
9760.7608610.9011720.0
9770.6728210.6064671.0
9780.7013990.17231.0
9790.0197970.1434380.0
9800.2463240.2754470.0
9810.76570.3546021.0
9820.6785260.855061.0
9830.2444570.722730.0
9840.05370780.2341630.0
9850.4908590.795230.0
9860.5776550.9740091.0
9870.3856940.8909481.0
9880.05090780.002770971.0
9890.399750.2439231.0
9900.7673950.76021.0
9910.3337780.9005791.0
9920.1122820.5259041.0
9930.6934480.9689640.0
9940.8713760.5302571.0
9950.8874190.3883940.0
9960.9337180.2982861.0
9970.8887790.7865550.0
9980.7402510.2711631.0
9990.9902860.08643121.0
10000.2022440.4782460.0
10010.560830.9863881.0
10020.7187750.5156321.0
10030.3835250.3839290.0
10040.8174750.1789760.0
10050.2525270.332440.0
10060.09301320.8305850.0
10070.6288610.1785350.0
10080.6983830.01110741.0
10090.07090280.1005230.0
10100.4468730.9430570.0
10110.9129580.1256661.0
10120.6685610.9260210.0
10130.6287050.9736780.0
10140.9720050.2158161.0
10150.3399440.72191.0
10160.1623040.6413241.0
10170.03495890.5021360.0
10180.9008920.6907131.0
10190.0007701820.530771.0
10200.04624990.5403520.0
10210.2091190.1858920.0
10220.585330.880580.0
10230.5161680.3567140.0
10240.7218890.5021141.0
10250.4675240.1234031.0
10260.3958750.9760190.0
10270.9671890.8236830.0
10280.06180220.6526970.0
10290.02888680.1568810.0
10300.577320.5318550.0
10310.2379130.190651.0
10320.7154420.5334630.0
10330.03928520.8602730.0
10340.1707660.3136540.0
10350.5936520.5982131.0
10360.8845680.4225561.0
10370.4758740.1330871.0
10380.6087950.3631861.0
10390.5490660.1741771.0
10400.6485060.9934930.0
10410.438650.9187561.0
10420.6371440.1091991.0
10430.3803820.03314631.0
10440.4216530.06547320.0
10450.9519590.3533720.0
10460.7688970.8682310.0
10470.7273310.6287841.0
10480.2938880.8472780.0
10490.9998990.2791531.0
10500.09939720.965140.0
10510.4890130.2932411.0
10520.8929180.1725241.0
10530.4728410.2363690.0
10540.7491030.5318171.0
10550.4063610.05258551.0
10560.7845440.5660430.0
10570.8413530.08618331.0
10580.9573920.6011661.0
10590.4178060.9321070.0
10600.3730510.433511.0
10610.7304690.5819010.0
10620.1958140.5695370.0
10630.8727020.8324780.0
10640.6873510.04681971.0
10650.3069390.2843611.0
10660.520890.4202540.0
10670.00172150.7909790.0
10680.9659980.9872340.0
10690.1781030.2707581.0
10700.9400830.2278971.0
10710.9482350.2186141.0
10720.6777550.4072211.0
10730.1689630.6673430.0
10740.06876090.3501980.0
10750.7477760.485551.0
10760.2472450.8198960.0
10770.004521160.6611210.0
10780.338480.07810030.0
10790.09618280.8221341.0
10800.1049880.2410191.0
10810.9388450.5385531.0
10820.3252030.9475560.0
10830.4224330.3216191.0
10840.7606280.7022551.0
10850.2252810.7568341.0
10860.9989910.4689061.0
10870.1750540.5804991.0
10880.6756890.9581110.0
10890.8937540.8456191.0
10900.5255560.3853831.0
10910.9762920.1974291.0
10920.0467710.5283150.0
10930.04586630.6418670.0
10940.9669930.03407121.0
10950.996280.2083751.0
10960.1451860.2685950.0
10970.2290940.08973410.0
10980.6737840.427131.0
10990.3131520.08040021.0
11000.2708060.08382131.0
11010.006101880.710760.0
11020.01079710.5461551.0
11030.7187840.4871231.0
11040.3469010.5846371.0
11050.3512380.5387551.0
11060.5251050.2554520.0
11070.03625950.8938031.0
11080.9859340.1333791.0
11090.5507770.7236411.0
11100.01644340.4572351.0
11110.7392540.3448961.0
11120.7641420.3552911.0
11130.8761970.06033791.0
11140.5513520.4884061.0
11150.29790.4862521.0
11160.6018920.7039331.0
11170.7245480.7359141.0
11180.7757820.7859620.0
11190.7870280.7906450.0
11200.5800660.2902731.0
11210.1443260.5372520.0
11220.08035660.1474240.0
11230.2503430.7278671.0
11240.4481520.4032771.0
11250.06562320.640280.0
11260.08894280.7851470.0
11270.7023690.9634940.0
11280.3498740.1853661.0
11290.48540.6254071.0
11300.2525320.3515111.0
11310.0808510.3367730.0
11320.9350440.9590320.0
11330.4979310.1791460.0
11340.288510.1608011.0
11350.1675290.2192390.0
11360.2163440.2839540.0
11370.1956150.3491660.0
11380.4963690.5131891.0
11390.5084310.2278481.0
11400.3068530.05849041.0
11410.3125050.1496631.0
11420.8056630.7771470.0
11430.8724910.9248660.0
11440.1181210.4181040.0
11450.4473170.2245090.0
11460.784720.4060311.0
11470.07379290.3022530.0
11480.4210530.09843380.0
11490.03115960.4592870.0
11500.6710060.4431371.0
11510.6914410.1351541.0
11520.9875430.7954050.0
11530.9179640.8215181.0
11540.4856740.7246891.0
11550.02384210.2795860.0
11560.05789330.4246020.0
11570.1380620.3574850.0
11580.2430940.7817150.0
11590.9672870.09275081.0
11600.1970090.1465140.0
11610.1678170.996911.0
11620.7409410.9741710.0
11630.09648250.600320.0
11640.111710.474080.0
11650.6904820.1503420.0
11660.1156610.2387791.0
11670.2758960.6360160.0
11680.6967210.5637320.0
11690.5118320.6947471.0
11700.152010.09231560.0
11710.5492510.08612491.0
11720.2423110.1065061.0
11730.6671070.09800941.0
11740.4400290.2266710.0
11750.7161770.7475131.0
11760.5777720.7417870.0
11770.6902910.2217441.0
11780.7976440.6730171.0
11790.4467790.723751.0
11800.5534920.9428231.0
11810.2488530.5706580.0
11820.7241930.5437930.0
11830.7217590.08778171.0
11840.02882030.3432730.0
11850.5622290.7138621.0
11860.2966950.5911171.0
11870.3221220.9220760.0
11880.4436360.3279721.0
11890.1986360.5577070.0
11900.128360.9410440.0
11910.07046830.2787990.0
11920.8132260.5914260.0
11930.7778450.06042550.0
11940.1755480.5633970.0
11950.5991750.9162340.0
11960.1947680.8935190.0
11970.1398520.8543590.0
11980.06490640.6347360.0
11990.3890630.4413811.0
12000.8545450.5179291.0
12010.2070690.1867970.0
12020.3333330.539741.0
12030.005207950.458410.0
12040.238240.6064880.0
12050.5226660.6052510.0
12060.7229870.8044010.0
12070.1945560.41090.0
12080.5623430.333331.0
12090.8755070.04716731.0
12100.4293180.4363470.0
12110.8942060.2787281.0
12120.1623670.6240591.0
12130.5138490.5498651.0
12140.2391420.3058710.0
12150.7310470.6147751.0
12160.6487160.880730.0
12170.08296180.02307430.0
12180.7262250.8162690.0
12190.877630.9883630.0
12200.8893390.3038121.0
12210.1985540.5251891.0
12220.5710540.8352761.0
12230.4930490.7844540.0
12240.8859690.6430341.0
12250.9373530.01227291.0
12260.06036080.2745350.0
12270.8544550.305460.0
12280.8596480.9783980.0
12290.7956990.9743480.0
12300.4459090.214690.0
12310.3693930.8959790.0
12320.1182260.3061870.0
12330.1759730.7921551.0
12340.2212030.6893880.0
12350.7644560.5210821.0
12360.4879490.8394291.0
12370.1393150.7372920.0
12380.1669930.7541280.0
12390.2686620.5001940.0
12400.1170880.2016830.0
12410.8847260.09913441.0
12420.2781490.7993351.0
12430.1526850.1596020.0
12440.8885220.09264241.0
12450.1389520.8858840.0
12460.1864960.265690.0
12470.4940360.2953881.0
12480.8883510.9535861.0
12490.5527490.6896830.0
12500.3859990.7688621.0
12510.4691520.6751411.0
12520.7683460.6809441.0
12530.3324780.4566231.0
12540.8103080.9117051.0
12550.1573440.8738520.0
12560.3976940.1458640.0
12570.1801670.2435830.0
12580.6785380.7291421.0
12590.8516630.990670.0
12600.4687510.8554720.0
12610.4082140.7179921.0
12620.2882880.3562351.0
12630.7984980.484141.0
12640.6933150.09040831.0
12650.2955670.2998361.0
12660.401030.9230080.0
12670.5796970.2578671.0
12680.2294630.3749920.0
12690.6263370.5273491.0
12700.3881580.7781631.0
12710.01332880.04992110.0
12720.869740.1133281.0
12730.7077210.8682830.0
12740.7057370.1443980.0
12750.5721280.0820241.0
12760.3684960.1594781.0
12770.2997330.04718651.0
12780.6150510.8738430.0
12790.5090930.2200431.0
12800.241610.14281.0
12810.1696490.6124820.0
12820.9140520.3592681.0
12830.6307040.1443840.0
12840.7914860.9513670.0
12850.4096230.9439440.0
12860.7393150.5521550.0
12870.7172430.4830471.0
12880.9524720.3602691.0
12890.3334380.7401671.0
12900.3068670.2925320.0
12910.9913260.6143841.0
12920.8438710.3690541.0
12930.1563970.3322211.0
12940.2761150.444181.0
12950.9452920.274191.0
12960.4440730.6876480.0
12970.05303960.09149040.0
12980.02601360.7085510.0
12990.4464150.1770591.0
13000.4456310.4566941.0
13010.7449910.5754270.0
13020.5811830.9146250.0
13030.8549170.7222681.0
13040.82940.7558421.0
13050.6264640.04524951.0
13060.2075980.5587370.0
13070.6724720.8507870.0
13080.71050.6139081.0
13090.1956320.7395731.0
13100.1109140.7249771.0
13110.2658850.8904260.0
13120.7449260.2741681.0
13130.2582320.8298840.0
13140.1045170.4143960.0
13150.6700080.3726390.0
13160.6322740.7260671.0
13170.3955550.8352230.0
13180.3121170.278521.0
13190.1103030.7370351.0
13200.8585670.8435581.0
13210.1606090.3964010.0
13220.5572850.2580631.0
13230.2367020.9018530.0
13240.9088230.2718861.0
13250.7157010.2653481.0
13260.7389960.4478731.0
13270.9832450.3024771.0
13280.6697370.679910.0
13290.5334710.01289331.0
13300.6179130.9708260.0
13310.04724160.8879491.0
13320.7882760.2773340.0
13330.8638090.7729921.0
13340.5659990.8832861.0
13350.5182590.2609461.0
13360.8672350.3741231.0
13370.7553120.4618990.0
13380.6826140.779530.0
13390.07045140.9029860.0
13400.626060.1171931.0
13410.09151950.1659650.0
13420.3785070.3741241.0
13430.2932960.785340.0
13440.9935210.6679361.0
13450.5349770.4382091.0
13460.3049820.6682011.0
13470.6818240.8435261.0
13480.4569650.5266591.0
13490.7952870.614821.0
13500.381410.1468181.0
13510.8489680.7210361.0
13520.1285190.5681631.0
13530.1091780.4195350.0
13540.1023180.1288831.0
13550.6717660.05098181.0
13560.03893850.4627930.0
13570.05249510.3189091.0
13580.7357330.7976860.0
13590.5101810.09421581.0
13600.4272640.1088751.0
13610.4397760.3733121.0
13620.4612090.3982651.0
13630.06663510.7701111.0
13640.93630.2450571.0
13650.7268930.2410411.0
13660.1211940.2503560.0
13670.5029810.9247450.0
13680.3461270.7513480.0
13690.1956980.2378580.0
13700.5229390.4037221.0
13710.8327310.8160631.0
13720.2570130.2203750.0
13730.5963930.6161361.0
13740.7775410.4133691.0
13750.4431340.8278760.0
13760.3083650.3729790.0
13770.4077060.8366860.0
13780.2736610.8232190.0
13790.9624350.5118631.0
13800.1435180.70220.0
13810.5064420.09115671.0
13820.1168770.4173320.0
13830.9491130.008835021.0
13840.5087070.02169241.0
13850.1949420.593961.0
13860.9853780.181441.0
13870.2499420.06146220.0
13880.3323620.5264441.0
13890.2933170.07104320.0
13900.2786510.1846151.0
13910.8641440.7320950.0
13920.7803590.3475281.0
13930.7725160.06996131.0
13940.9438590.7049451.0
13950.4789860.7586641.0
13960.05466560.8623331.0
13970.7243430.008369271.0
13980.5866130.8676840.0
13990.2391650.293740.0
14000.6601390.5481341.0
14010.421290.4826881.0
14020.7912610.6279481.0
14030.1149160.4010431.0
14040.7545440.4814231.0
14050.9884630.2569581.0
14060.695420.1980291.0
14070.5442090.2544560.0
14080.07481940.06026790.0
14090.2765050.1361351.0
14100.2144280.2465391.0
14110.2448330.1489040.0
14120.9245220.1366160.0
14130.682660.391070.0
14140.02661570.01136250.0
14150.1103420.770961.0
14160.2311860.3398490.0
14170.1185540.01853310.0
14180.1582920.9966420.0
14190.4284010.04138051.0
14200.2079970.1943020.0
14210.9814540.3766510.0
14220.8878740.5186621.0
14230.2753020.3438121.0
14240.1828250.2382150.0
14250.306210.3661641.0
14260.102540.7612360.0
14270.9900360.346690.0
14280.3532190.1142570.0
14290.8362020.06457231.0
14300.2740840.9575060.0
14310.2576590.6623441.0
14320.1568990.1389161.0
14330.02867640.8261150.0
14340.2213180.3879421.0
14350.4364030.4826811.0
14360.295130.4476531.0
14370.5126760.2750271.0
14380.06907360.1397050.0
14390.9185070.6634461.0
14400.2285960.914761.0
14410.9678010.9558860.0
14420.7041290.7832490.0
14430.3506520.2287950.0
14440.9971940.7265771.0
14450.4607630.544390.0
14460.8738260.5983381.0
14470.872990.9636820.0
14480.5127490.77420.0
14490.9765770.8866280.0
14500.7676320.9416141.0
14510.9356640.5614891.0
14520.9767330.2437371.0
14530.7336140.7279711.0
14540.964150.6770160.0
14550.654330.7898271.0
14560.6024510.3093031.0
14570.9261770.1436810.0
14580.8121850.1451871.0
14590.9481230.9944930.0
14600.6726010.3764641.0
14610.2638630.4303220.0
14620.7078440.03216071.0
14630.8570630.4439611.0
14640.8792950.4249491.0
14650.7107620.2574740.0
14660.1242360.08582090.0
14670.8953860.1224271.0
14680.6922290.06473841.0
14690.0927710.4864570.0
14700.4266880.01979441.0
14710.05326260.09285860.0
14720.2805730.4280111.0
14730.8344020.8158460.0
14740.7542280.4578111.0
14750.7061430.0546570.0
14760.07880850.5802010.0
14770.22720.5155850.0
14780.3819140.550341.0
14790.4123430.5356041.0
14800.5506270.09720130.0
14810.02340710.4710160.0
14820.6107560.5228631.0
14830.8406810.834160.0
14840.1083390.01080960.0
14850.6614140.02856561.0
14860.5477960.4960831.0
14870.2332260.0367290.0
14880.002821740.5098710.0
14890.6297590.1124921.0
14900.5267690.563731.0
14910.459230.5136120.0
14920.7987040.8994010.0
14930.1579790.05294970.0
14940.244260.3069660.0
14950.9652810.1879511.0
14960.9234260.4317521.0
14970.01103650.6196730.0
14980.3259030.5198221.0
14990.9488770.1793351.0
15000.4930740.8065450.0
15010.4876370.5590821.0
15020.159320.7474930.0
15030.3643570.1126321.0
15040.8367730.4521741.0
15050.6669480.9649860.0
15060.9715870.03197770.0
15070.1800290.5161390.0
15080.1099260.002111710.0
15090.8167020.2786171.0
15100.2682030.9488670.0
15110.1859090.9877281.0
15120.258760.707391.0
15130.7575720.3972831.0
15140.009638470.1544270.0
15150.5755030.06238681.0
15160.3408220.4496540.0
15170.7220040.1276380.0
15180.3207050.2547321.0
15190.803960.6611181.0
15200.3979070.3162921.0
15210.8409140.2792730.0
15220.1211790.6319040.0
15230.9255120.3895280.0
15240.6274940.01023371.0
15250.3176720.07126130.0
15260.7885960.2117740.0
15270.743450.9095230.0
15280.5091910.3260891.0
15290.6067990.1753581.0
15300.6484580.4541350.0
15310.3084340.05833271.0
15320.4687710.5475930.0
15330.3995750.2332341.0
15340.4316980.5956261.0
15350.1514810.4867821.0
15360.5072510.8879180.0
15370.2738160.1115181.0
15380.343050.78850.0
15390.4028340.6142220.0
15400.2138120.2301651.0
15410.2070780.8443830.0
15420.6040820.3817251.0
15430.8757480.5333820.0
15440.7371380.4235781.0
15450.8899640.6700790.0
15460.8675160.4333040.0
15470.1310230.5165580.0
15480.5856980.8689280.0
15490.6793010.8830821.0
15500.9118340.6182941.0
15510.6592140.3390231.0
15520.06180140.966290.0
15530.01701790.4451380.0
15540.7538310.9774060.0
15550.4289440.1683511.0
15560.2554030.8663640.0
15570.9728770.6711931.0
15580.7920370.3278481.0
15590.07857860.8433090.0
15600.05346050.404731.0
15610.5308450.5695011.0
15620.4181840.3495071.0
15630.4296360.4570331.0
15640.004373170.3426171.0
15650.1581320.6110360.0
15660.6499240.8355090.0
15670.7301140.4920550.0
15680.801110.06403371.0
15690.8386420.8643720.0
15700.5940150.5331861.0
15710.3265610.4519021.0
15720.7582780.1928820.0
15730.4774250.3494120.0
15740.6180190.8088360.0
15750.2983960.4691030.0
15760.3940610.6987451.0
15770.07941640.7128970.0
15780.4688990.4427180.0
15790.5209960.5068471.0
15800.3698420.7817140.0
15810.06042450.9012520.0
15820.8325180.4312321.0
15830.04757650.5732111.0
15840.3196240.1806441.0
15850.1078010.8361461.0
15860.3273440.1676331.0
15870.801340.9036520.0
15880.5301940.7309121.0
15890.107270.651351.0
15900.1674810.7003680.0
15910.9076440.9119960.0
15920.4017640.3871981.0
15930.770860.8307020.0
15940.5522630.03340181.0
15950.401650.7352841.0
15960.1599320.5625750.0
15970.7242790.4364911.0
15980.815680.6009870.0
15990.6540280.0604561.0
16000.6320510.6888241.0
16010.3557320.5620131.0
16020.407650.7224360.0
16030.4374780.5123660.0
16040.253280.9238630.0
16050.07669490.1035620.0
16060.06032760.7772630.0
16070.7639350.5127411.0
16080.2996670.4210760.0
16090.6767750.6537061.0
16100.4054220.6899280.0
16110.8983480.3121431.0
16120.4714410.8579390.0
16130.7701260.3621.0
16140.1873520.8812811.0
16150.7135370.2804311.0
16160.2526880.2772311.0
16170.09652970.3166770.0
16180.0683120.6576990.0
16190.1107750.626490.0
16200.1558410.2991750.0
16210.7649440.4697971.0
16220.4801320.2771361.0
16230.5958460.9655681.0
16240.5719480.7822661.0
16250.7393740.1444471.0
16260.96230.9307160.0
16270.814260.4974471.0
16280.7007280.4324781.0
16290.9302450.9030030.0
16300.2020410.4531431.0
16310.9675040.166551.0
16320.7886510.1463881.0
16330.2833230.3429381.0
16340.8675440.4112431.0
16350.5073860.9341610.0
16360.9817610.8042370.0
16370.004831320.07318191.0
16380.8248350.9705550.0
16390.21790.4652421.0
16400.968960.2052531.0
16410.06515510.7906910.0
16420.3047880.1865480.0
16430.3201980.4169480.0
16440.2382370.0973771.0
16450.6510750.361981.0
16460.7968660.1906411.0
16470.4449870.2060181.0
16480.07549620.6325761.0
16490.6749720.3972541.0
16500.3543480.07358621.0
16510.7126080.9266940.0
16520.5504440.9605370.0
16530.07329010.3966521.0
16540.006256480.6167670.0
16550.4187620.151050.0
16560.3176150.3042461.0
16570.8622260.7607660.0
16580.660950.7556840.0
16590.5809110.1417351.0
16600.3585240.7685110.0
16610.9880050.841671.0
16620.5154730.4893241.0
16630.6662680.8725021.0
16640.7531260.2536541.0
16650.5431560.9649941.0
16660.3602720.1890161.0
16670.2111410.3023040.0
16680.7597880.08082781.0
16690.2502180.3746821.0
16700.7732510.6927481.0
16710.1512480.8356190.0
16720.03286270.8204241.0
16730.1853060.2430271.0
16740.7401350.7712680.0
16750.03594670.8615850.0
16760.8411610.9057420.0
16770.1423460.5561750.0
16780.3470660.9237781.0
16790.2467050.888481.0
16800.2053020.6631820.0
16810.7845210.9480450.0
16820.4667440.733671.0
16830.5973040.6307861.0
16840.9525870.09131191.0
16850.6506740.3983020.0
16860.9660370.9006071.0
16870.2353060.2625341.0
16880.4098350.7591490.0
16890.5928450.4463731.0
16900.1526710.5039230.0
16910.1813780.2359020.0
16920.9442620.4263241.0
16930.6432860.6909651.0
16940.6378820.5973941.0
16950.1419610.1369550.0
16960.3057910.02619580.0
16970.8746180.7856190.0
16980.3055280.5161971.0
16990.703930.1991711.0
17000.9541780.3090881.0
17010.7417130.5206010.0
17020.3067720.5051361.0
17030.5500770.3194131.0
17040.228150.04127910.0
17050.513970.269471.0
17060.9048710.8969460.0
17070.3984430.4663310.0
17080.3090.9317930.0
17090.3592540.5502441.0
17100.9605860.3476411.0
17110.09296240.5870241.0
17120.8682070.5411091.0
17130.4775530.1907181.0
17140.9508440.5352561.0
17150.2614180.3873791.0
17160.9958510.4161961.0
17170.4186330.09807921.0
17180.2100840.117380.0
17190.7191930.6183450.0
17200.8765510.9090520.0
17210.8725530.6102281.0
17220.5577370.1941521.0
17230.9871150.02107641.0
17240.358140.796010.0
17250.5628660.04733231.0
17260.8882390.1657670.0
17270.6233670.6845231.0
17280.3768460.5981071.0
17290.9765530.7769191.0
17300.8932420.4601451.0
17310.4546330.900420.0
17320.7010180.5644840.0
17330.5258730.6525490.0
17340.8104490.9747090.0
17350.1848180.2019330.0
17360.9649230.01363581.0
17370.1936690.7204040.0
17380.2637090.3247840.0
17390.3727550.06340370.0
17400.7493820.1517951.0
17410.6278830.3398051.0
17420.7727570.3655531.0
17430.6448930.8744320.0
17440.9634030.2189831.0
17450.2762970.1562051.0
17460.4110830.919080.0
17470.9068390.3101021.0
17480.3637940.7105151.0
17490.2048210.8507560.0
17500.5121870.9601840.0
17510.8212120.5409511.0
17520.5415560.5566610.0
17530.9053450.684741.0
17540.6660350.7187271.0
17550.5395260.8567450.0
17560.8618990.287931.0
17570.9886790.8278070.0
17580.2115670.9408110.0
17590.4109170.1519991.0
17600.3550850.3580691.0
17610.4605330.4605611.0
17620.8240580.9614520.0
17630.8774440.8897530.0
17640.9738780.4916521.0
17650.1270710.7698560.0
17660.8872780.774141.0
17670.2786440.07196181.0
17680.9024860.8170120.0
17690.3716450.2026110.0
17700.3040080.3318261.0
17710.6481440.2650390.0
17720.3968270.779330.0
17730.6229190.6086721.0
17740.9709160.5661721.0
17750.8992650.3380551.0
17760.5281250.6239151.0
17770.7236070.142471.0
17780.4184930.3620570.0
17790.9510570.2943811.0
17800.2289770.7649440.0
17810.6225670.3523891.0
17820.7525060.2125860.0
17830.4366210.7827180.0
17840.2023370.8633681.0
17850.2085730.8886481.0
17860.2997440.5299560.0
17870.0003683420.6521730.0
17880.4081730.2368311.0
17890.3578660.04115341.0
17900.08376180.8907281.0
17910.6932880.7351941.0
17920.7540190.6160081.0
17930.2752740.5618640.0
17940.0004558120.05029990.0
17950.4513110.159321.0
17960.4529370.3614151.0
17970.8359290.6556061.0
17980.1660370.5147051.0
17990.06313290.1573541.0
18000.3464580.9391641.0
18010.6656330.4611871.0
18020.3682470.555111.0
18030.97390.7747780.0
18040.9121290.249841.0
18050.1332580.2107320.0
18060.5261220.2519511.0
18070.4569540.9297831.0
18080.8476150.3580731.0
18090.5335610.227471.0
18100.5366410.1458241.0
18110.5963440.09556071.0
18120.8360380.6677920.0
18130.5574630.6707750.0
18140.4551870.2143051.0
18150.5371110.08984541.0
18160.4359270.02138481.0
18170.1860510.7283840.0
18180.0236350.04728730.0
18190.2404270.8650541.0
18200.1086450.1789790.0
18210.3316970.9126771.0
18220.3093870.2898721.0
18230.4286150.1189971.0
18240.9498660.4514661.0
18250.393570.5134331.0
18260.8400820.8472530.0
18270.8143760.3424241.0
18280.9736440.6624280.0
18290.2210720.3271760.0
18300.5125510.7032041.0
18310.4388690.3413511.0
18320.6504880.2260890.0
18330.5931960.4725651.0
18340.7266140.009278950.0
18350.7731030.3264981.0
18360.444140.01247071.0
18370.5629910.3663941.0
18380.4339480.9292050.0
18390.06724270.6799850.0
18400.8735010.2196961.0
18410.0019770.3173860.0
18420.5898110.4842971.0
18430.8189760.7943960.0
18440.4850910.4701031.0
18450.5319960.5793610.0
18460.9197730.9696620.0
18470.107020.2068390.0
18480.90370.7168130.0
18490.7490550.3984481.0
18500.5950770.5716240.0
18510.2149230.4830841.0
18520.2049760.7812411.0
18530.9440980.1802761.0
18540.6085430.5879411.0
18550.826420.3876090.0
18560.1481540.4558110.0
18570.2850880.7015750.0
18580.5043780.4255671.0
18590.5332390.5289681.0
18600.0344340.5360520.0
18610.5082390.4993150.0
18620.6613260.1295291.0
18630.979850.1619461.0
18640.3940040.8394530.0
18650.5465160.581550.0
18660.7568690.04601161.0
18670.4001350.07543391.0
18680.1171010.09728310.0
18690.6378840.3897231.0
18700.5666870.0126291.0
18710.4500490.6267660.0
18720.2824750.5958041.0
18730.233710.4751990.0
18740.2368930.8366340.0
18750.1860720.3995430.0
18760.7818310.5327650.0
18770.5550550.1571090.0
18780.8625460.02237151.0
18790.4680940.7120621.0
18800.8119760.4091990.0
18810.5644390.7865730.0
18820.3885590.09721541.0
18830.01723210.6179131.0
18840.4831230.6085861.0
18850.5875020.2602621.0
18860.8620740.5787261.0
18870.06146420.7248920.0
18880.3876790.9839240.0
18890.1710930.2903930.0
18900.1867120.4619050.0
18910.5049090.06865531.0
18920.6263220.5940851.0
18930.8681790.8410861.0
18940.4643630.8816881.0
18950.2325950.6757080.0
18960.6502760.4119391.0
18970.9637540.205981.0
18980.09486050.9717970.0
18990.9197780.3877041.0
19000.6541450.3795671.0
19010.2935410.4914821.0
19020.459460.6640791.0
19030.4734070.6165331.0
19040.09587660.202770.0
19050.8600060.6431181.0
19060.4181170.869461.0
19070.508110.8693231.0
19080.6417860.2772351.0
19090.5273270.9371851.0
19100.05613070.9034090.0
19110.3004280.1403651.0
19120.6818550.8138010.0
19130.2302370.2340270.0
19140.6912370.2701691.0
19150.7656980.4851891.0
19160.6562320.833180.0
19170.9427110.4274321.0
19180.1446920.6908550.0
19190.4035630.4637621.0
19200.819410.7987590.0
19210.6860870.7615690.0
19220.6464160.5403911.0
19230.5286730.1254471.0
19240.2390210.7149921.0
19250.3205860.2550050.0
19260.133460.5361510.0
19270.3061880.6371291.0
19280.6577960.6014241.0
19290.918720.9224090.0
19300.2295530.262181.0
19310.1139210.7987110.0
19320.07660290.5653070.0
19330.3859870.6124740.0
19340.7431020.8107691.0
19350.03668010.7765390.0
19360.3347690.5644521.0
19370.9838930.5918781.0
19380.161860.01118630.0
19390.270760.5078050.0
19400.3342150.8160390.0
19410.2161940.1076570.0
19420.2522230.1474271.0
19430.9380150.6457531.0
19440.9333250.4518891.0
19450.1218240.3677210.0
19460.2869150.4966961.0
19470.769750.233351.0
19480.3731990.5277511.0
19490.6236740.6533691.0
19500.1804650.656921.0
19510.494670.3889741.0
19520.4071210.8500190.0
19530.3916880.06282830.0
19540.8775790.5643111.0
19550.14520.6077830.0
19560.2205360.0234250.0
19570.5638620.8138980.0
19580.3193320.2558521.0
19590.6013280.8242631.0
19600.7094180.6176961.0
19610.4624210.1585891.0
19620.2539480.2493931.0
19630.09332410.6959780.0
19640.1139910.02864750.0
19650.1195780.9438070.0
19660.4055610.6856231.0
19670.3751440.3212551.0
19680.8337540.7381711.0
19690.8359910.2629460.0
19700.9048410.6501231.0
19710.03956130.9951260.0
19720.8600270.4644750.0
19730.4506250.4575961.0
19740.3655380.6495091.0
19750.8944160.1532530.0
19760.9561570.3659931.0
19770.06078650.9377650.0
19780.2163090.1190361.0
19790.8583620.2071661.0
19800.02973730.2676930.0
19810.571730.08315511.0
19820.4931610.9080380.0
19830.1157850.7430140.0
19840.7513430.1958181.0
19850.4790420.4882351.0
19860.6120040.2501920.0
19870.9751740.6006650.0
19880.2986910.2083791.0
19890.8840480.6025720.0
19900.6935850.5851691.0
19910.9933010.8821380.0
19920.66260.1833330.0
19930.7415570.04873550.0
19940.3115460.8692360.0
19950.8424140.09559861.0
19960.7086590.6839661.0
19970.3788870.5208590.0
19980.72560.1602811.0
19990.37460.8065970.0
20000.7810750.2304160.0
50 / 61

Plot data with StatsPlots

using StatsPlots
@df df scatter( :x1, :x2, group = :y)

51 / 61
using GLM, Statistics
dapp = first(df, 1500)
mdl = glm(@formula(y ~ x1*x1 + x2*x2 ), dapp, Binomial(), LogitLink())
StatsModels.TableRegressionModel{GLM.GeneralizedLinearModel{GLM.GlmResp{Vector{Float64}, Distributions.Binomial{Float64}, GLM.LogitLink}, GLM.DensePredChol{Float64, LinearAlgebra.CholeskyPivoted{Float64, Matrix{Float64}, Vector{Int64}}}}, Matrix{Float64}}
y ~ 1 + x1 + x2 + x1 & x1 + x2 & x2
Coefficients:
────────────────────────────────────────────────────────────────────────
Coef. Std. Error z Pr(>|z|) Lower 95% Upper 95%
────────────────────────────────────────────────────────────────────────
(Intercept) -1.52982 0.237296 -6.45 <1e-09 -1.99491 -1.06472
x1 6.53191 0.818426 7.98 <1e-14 4.92782 8.13599
x2 3.786 0.793736 4.77 <1e-05 2.23031 5.34169
x1 & x1 -4.45416 0.779603 -5.71 <1e-07 -5.98215 -2.92617
x2 & x2 -5.77417 0.797466 -7.24 <1e-12 -7.33718 -4.21117
────────────────────────────────────────────────────────────────────────
52 / 61
dtest = last(df, 500)
ypred = GLM.predict(mdl, dtest)
mean(round.(Int, ypred) .== dtest.y)
0.728
@df df scatter( :x1, :x2, group = round.(GLM.predict(mdl, df)))

53 / 61

Tableau disjonctif

Creation des données

import DataFrames: DataFrame
data = DataFrame( Sexe = split("F"^5 * "M"^5, ""),
Revenu = split("M"^2 * "E"^5 * "M"^3, ""),
Pref = ["A", "A", "B", "C", "C", "C", "B", "B", "B","A"])
10×3 DataFrame
RowSexeRevenuPref
SubStrin…SubStrin…String
1FMA
2FMA
3FEB
4FEC
5FEC
6MEC
7MEB
8MMB
9MMB
10MMA
54 / 61

Fonction FactoMineR

using RCall
@rput data
R"library(FactoMineR)"
rcopy(R"tab.disjonctif(data)")
10×7 Matrix{Int64}:
1 0 0 1 1 0 0
1 0 0 1 1 0 0
1 0 1 0 0 1 0
1 0 1 0 0 0 1
1 0 1 0 0 0 1
0 1 1 0 0 0 1
0 1 1 0 0 1 0
0 1 0 1 0 1 0
0 1 0 1 0 1 0
0 1 0 1 1 0 0
55 / 61

Vectorized version

  • permutedims transpose la matrice de chaines
  • hcat est le Julia cbind
levels = unique.(eachcol(Matrix(data)))
vals = hcat([(sort(unique(col)) .== permutedims(col))' for col in eachcol(Matrix(data))]...)
DataFrame(Int.(vals), vcat(levels...), makeunique=true)
10×7 DataFrame
RowFMM_1EABC
Int64Int64Int64Int64Int64Int64Int64
11001100
21001100
31010010
41010001
51010001
60110001
70110010
80101010
90101010
100101100
56 / 61

Version avec des boucles

function tab_disjonctif(x :: AbstractMatrix)
res = Vector{Int}[] # Création d'un vecteur de vecteurs d'entiers
for col in eachcol(x)
levels = unique(col)
for level in levels
push!(res, col .== level)
end
end
return hcat(res...) # Transformation en matrice du vecteur de vecteurs
end
tab_disjonctif (generic function with 1 method)

On peut aussi faire une sortie en dataframe

tab_disjonctif(Matrix(data))
10×7 Matrix{Int64}:
1 0 1 0 1 0 0
1 0 1 0 1 0 0
1 0 0 1 0 1 0
1 0 0 1 0 0 1
1 0 0 1 0 0 1
0 1 0 1 0 0 1
0 1 0 1 0 1 0
0 1 1 0 0 1 0
0 1 1 0 0 1 0
0 1 1 0 1 0 0
57 / 61

Version DataFrame

function tab_disjonctif(df :: DataFrame)
outnames = Symbol[]
res = copy(df)
for col in names(df)
cates = sort(unique(df[!, col]))
outname = Symbol.(col,"_", cates)
push!(outnames, outname...)
transform!(res, @. col => ByRow(isequal(cates)) => outname)
end
return res[!, outnames]
end
tab_disjonctif (generic function with 2 methods)
58 / 61
tab_disjonctif(data)
10×7 DataFrame
RowSexe_FSexe_MRevenu_ERevenu_MPref_APref_BPref_C
BoolBoolBoolBoolBoolBoolBool
1truefalsefalsetruetruefalsefalse
2truefalsefalsetruetruefalsefalse
3truefalsetruefalsefalsetruefalse
4truefalsetruefalsefalsefalsetrue
5truefalsetruefalsefalsefalsetrue
6falsetruetruefalsefalsefalsetrue
7falsetruetruefalsefalsetruefalse
8falsetruefalsetruefalsetruefalse
9falsetruefalsetruefalsetruefalse
10falsetruefalsetruetruefalsefalse
59 / 61
60 / 61

This page was generated using Literate.jl.

61 / 61

Why Julia?

  • Started in 2009 and first version was released in 2012.
  • High-level languages like Python and R let one explore and experiment rapidly, but can run slow.
  • Low-level languages like Fortran/C++ tend to take longer to develop, but run fast.
  • This is sometimes called the "two language problem" and is something the Julia developers set out to eliminate.
  • Julia's promise is to provide a "best of both worlds" experience for programmers who need to develop novel algorithms and bring them into production environments with minimal effort.

Julia: A Fresh Approach to Numerical Computing

Jeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah

SIAM Rev., 59(1), 65–98. (34 pages) 2012

2 / 61
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow