Let's leverage! - Part II
Nach dem gestrigen Frusterlebnis geht es heute schöner weiter.
PortAudio lässt sich nur bis Julia-Version 1.0 verwenden, ich habe 1.2. Klar, daß das nicht klappern kann, unabhängig von der Home-Variablen. Das build.jl im Pfad ~/.julia/clones/15043945597277091340_full/deps hat übrigens nach den fehlgeschlagenen Versuchen folgenden Inhalt:
Aber die Fehlermeldung war ja eindeutig:
Folglich habe ich mich nach einem Ersatz für PortAudio umgegugged, genauer gesagt habe ich mich gefragt, was ich eigentlich wirklich brauche. Und das ist ja dem Projekt Getting Started with Audio Data Analysis (Voice) using Deep Learning eindeutig zu entnehmen, ich war mal wieder zu oberflächlich: Als Erstes wird eine Wav-Datei eingelesen, um geplottet werden zu können (in dieser Reihenfolge). Durch Googlen und Stöbern in den Julia-Paketen bin ich dann fündig geworden:
GitHub - dancasimiro/WAV.jl: Julia package for working with WAV files
Readme · WAV.jl
Also:
Damit habe ich alles für den ersten Schritt, bzw. den ersten Schritt schon ausgeführt. Jetzt ist zu klären, wie ich das am besten plotte. In Python gibt es die Methode/Funktion wavplot - "Gibt es sowas auch in Julia?", sollte die erste Frage lauten.
Und diese Frage stösst meine Nase auf das hier:
A really brief introduction to audio signal processing in Julia | seaandsailor
Wunderbar, noch zwei Pakete zu installieren, dann kann's gleich losgehen mit was noch Wunderbarerem!
Und dann einfach:
Die Spektrogramm-Funktion funzt natürlich trotzdem nicht, egal. Eigentlich habe ich mein Ziel doch erreicht: Ich habe die Werte und ich kann damit plotten.
Jetzt muss ich das alles aber erstmal sich setzen lassen (bin leider nicht so leistungsfähig wie ich gerne wäre).
Eine kurze und saubere Zusammenfassung und Testlauf mit einem anderen Wav, dann Pause:
Es fällt auf, daß mit Plots die zwei Werte, die im s-Array (bzw. y) enthalten sind, unterschiedlich farbig dargestellt sind. Auch das muss ich erstmal auf mich wirken lassen - aber im Grunde scheint mir das nix Schlechtes zu sein ;-) .
{fim könnte auch sagen, es sei stereoid}
..........................................
PAUSE
Update coming soon!
...............................................................
Kurze Pausenunterbrechung
Wow!
Das kann Plots:
Aus dieser Anleitung, die ich mir demnächst auch mal zu Gemüte führe (-n muss!):
PyPlot - Plots
....................................................................................
Kurze, diesmal längere Pause
.......................................................................................................
Erleichterung!
MFCC lässt sich installieren (wird später gebraucht!):
Kurzes Antesten:
Sieht gut aus, nein, sieht super³ aus!!!
Damit kann ich weiterkomen.
....................................................................................
Kurze, diesmal wirklich längere Pause
.......................................................................................................
Ich erklär's morgen (vielleicht).
Noch ein paar Links:
A Complete Tutorial to Learn Data Science with Julia from Scratch Models - ScikitLearn.jl GitHub - JuliaIO/JLD.jl: Saving and loading julia variables while preserving native types How to save an NxNxN array (or Matrix) into a file in Julia (or Python)? - Stack Overflow Julia Language - Initialize an Empty Array | julia-lang Tutorial Arrays · The Julia Language Julia ASTs · The Julia Language Learn Julia in Y Minutes
Und ein ganz besonderer:
m00-www.pdf
Und noch eine für alle:
Ameisen: Eine für alle | ZEIT ONLINE
PortAudio lässt sich nur bis Julia-Version 1.0 verwenden, ich habe 1.2. Klar, daß das nicht klappern kann, unabhängig von der Home-Variablen. Das build.jl im Pfad ~/.julia/clones/15043945597277091340_full/deps hat übrigens nach den fehlgeschlagenen Versuchen folgenden Inhalt:
using BinDeps
using Compat
@BinDeps.setup
ENV["JULIA_ROOT"] = abspath(JULIA_HOME, "../../")
libportaudio = library_dependency("libportaudio", aliases=["libportaudio-2"])
provides(AptGet, "portaudio19-dev", libportaudio)
provides(Pacman, "portaudio", libportaudio)
@osx_only begin
using Homebrew
provides(Homebrew.HB, "portaudio", libportaudio)
end
@windows_only begin
using WinRPM
provides(WinRPM.RPM, "libportaudio2", libportaudio, os = :Windows)
end
@BinDeps.install @compat Dict(:libportaudio => :libportaudio)
Aber die Fehlermeldung war ja eindeutig:
ERROR: Unsatisfiable requirements detected for package PortAudio [80ea8bcb]:
PortAudio [80ea8bcb] log:
├─possible versions are: [0.2.1, 0.3.0, 0.4.0, 0.5.0, 1.0.0] or uninstalled
├─restricted to versions 0.0.0-* by MusicProcessing [1b8316d5], leaving only versions [0.2.1, 0.3.0, 0.4.0, 0.5.0, 1.0.0]
│ └─MusicProcessing [1b8316d5] log:
│ ├─possible versions are: 0.0.0 or uninstalled
│ └─MusicProcessing [1b8316d5] is fixed to version 0.0.0
└─restricted by julia compatibility requirements to versions: uninstalled — no versions left
Folglich habe ich mich nach einem Ersatz für PortAudio umgegugged, genauer gesagt habe ich mich gefragt, was ich eigentlich wirklich brauche. Und das ist ja dem Projekt Getting Started with Audio Data Analysis (Voice) using Deep Learning eindeutig zu entnehmen, ich war mal wieder zu oberflächlich: Als Erstes wird eine Wav-Datei eingelesen, um geplottet werden zu können (in dieser Reihenfolge). Durch Googlen und Stöbern in den Julia-Paketen bin ich dann fündig geworden:
GitHub - dancasimiro/WAV.jl: Julia package for working with WAV files
Readme · WAV.jl
Also:
julia> using Pkg
julia> Pkg.add("WAV")
Resolving package versions...
Installed WAV ──── v1.0.2
Installed FileIO ─ v1.0.7
Updating `~/.julia/environments/v1.2/Project.toml`
[8149f6b0] + WAV v1.0.2
Updating `~/.julia/environments/v1.2/Manifest.toml`
[5789e2e9] + FileIO v1.0.7
[8149f6b0] + WAV v1.0.2
julia> using WAV
[ Info: Precompiling WAV [8149f6b0-98f6-5db9-b78f-408fbbb8ef88]
julia> y,Fs,nbits,opt = wavread("/home/heide/python-wave-analysis/Train/3749.wav")
([0.022919400616473892 0.023773918881801814; 0.021179845576342053 0.02264473403118992; … ; 0.0005798516800439467 0.013885921811578723; 0.008423108615375225 0.016998809778130435], 44100.0f0, 0x0010, WAVChunk[WAVChunk(Symbol("fmt "), UInt8[0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00])])
julia> y
176400×2 Array{Float64,2}:
0.0229194 0.0237739
0.0211798 0.0226447
0.021424 0.0238655
0.0198981 0.0227668
0.0122684 0.014008
0.00674459 0.00555437
0.00933866 0.00360118
0.0118412 0.000640889
0.00726341 -0.00946074
0.000305185 -0.0213019
⋮
0.00756859 0.0126041
0.00625629 0.0174261
0.00592059 0.0220954
0.00314341 0.0225837
-0.000366222 0.0202948
-0.0019837 0.0179754
-0.00241096 0.0149236
0.000579852 0.0138859
0.00842311 0.0169988
Damit habe ich alles für den ersten Schritt, bzw. den ersten Schritt schon ausgeführt. Jetzt ist zu klären, wie ich das am besten plotte. In Python gibt es die Methode/Funktion wavplot - "Gibt es sowas auch in Julia?", sollte die erste Frage lauten.
Und diese Frage stösst meine Nase auf das hier:
A really brief introduction to audio signal processing in Julia | seaandsailor
Wunderbar, noch zwei Pakete zu installieren, dann kann's gleich losgehen mit was noch Wunderbarerem!
julia> Pkg.add("DSP")
Resolving package versions...
Updating `~/.julia/environments/v1.2/Project.toml`
[no changes]
Updating `~/.julia/environments/v1.2/Manifest.toml`
[no changes]
julia> Pkg.add("PyPlot")
Resolving package versions...
Updating `~/.julia/environments/v1.2/Project.toml`
[no changes]
Updating `~/.julia/environments/v1.2/Manifest.toml`
[no changes]
Und dann einfach:
using DSP, WAV, PyPlot # "using" makes the listed modules available for the # user, like "import" in other languages # Loading and plotting an audio signal s, fs = wavread("test.wav") plot(0:1/fs:(length(s)-1)/fs, s) xlabel("Time [s]")
So steht's in der Anleitung, und das schmeisse ich jetzt in den REPL,
allerdings mit der Anpassung:
s, fs = wavread("/home/heide/python-wave-analysis/Train/3749.wav")
ERROR!
julia> plot(0:1/fs:(length(s)-1)/fs, s)
ERROR: PyError ($(Expr(:escape, :(ccall(#= /home/heide/.julia/packages/PyCall/ttONZ/src/pyfncall.jl:44 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) <class 'ValueError'>
ValueError('x and y must have same first dimension, but have shapes (352800,) and (176400, 2)')
Es ist schon wie verhext, warum klappt immer wieder iwas nicht???
Die Fehlermeldung ist allerdings verständlich, ich gugge mol ...
using Plots
plot(size=(500,500),leg=false)
s, fs = wavread("/home/heide/python-wave-analysis/Train/3749.wav")
([0.022919400616473892 0.023773918881801814; 0.021179845576342053 0.02264473403118992; … ; 0.0005798516800439467 0.013885921811578723; 0.008423108615375225 0.016998809778130435], 44100.0f0, 0x0010, WAVChunk[WAVChunk(Symbol("fmt "), UInt8[0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x44, 0xac, 0x00, 0x00, 0x10, 0xb1, 0x02, 0x00, 0x04, 0x00, 0x10, 0x00])])
x = s
y = collect(1:length(s)/2)
Plots.scatter(y,x)
Das bringt ein Ergebnis, was hoffen lässt:
Aber, was für ein Gebastel (wieder mal) !!
Und mit meiner Umwandlung der Variablen zu x und y klappert nun auch PyPlot:
julia> plot(y, x, color="red", linewidth=2.0, linestyle="--")
2-element Array{PyCall.PyObject,1}:
PyObject <matplotlib.lines.Line2D object at 0x7f25d04badd8>
PyObject <matplotlib.lines.Line2D object at 0x7f25d04baf28>
Die Spektrogramm-Funktion funzt natürlich trotzdem nicht, egal. Eigentlich habe ich mein Ziel doch erreicht: Ich habe die Werte und ich kann damit plotten.
Jetzt muss ich das alles aber erstmal sich setzen lassen (bin leider nicht so leistungsfähig wie ich gerne wäre).
Eine kurze und saubere Zusammenfassung und Testlauf mit einem anderen Wav, dann Pause:
using WAVUnd die zwei Diagramme (Plots und PyPlot):
using Plots
using PyPlot
Plots.plot(size=(500,500),leg=false)
s, fs, nbits = wavread("/home/heide/python-wave-analysis/Train/3333.wav")
x = s
y = collect(1:length(s)/2)
Plots.scatter(y,x) # Mit Plots plotten
PyPlot.plot(y, x, color="red", linewidth=2.0, linestyle="--") # Mit PyPlot plotten
Es fällt auf, daß mit Plots die zwei Werte, die im s-Array (bzw. y) enthalten sind, unterschiedlich farbig dargestellt sind. Auch das muss ich erstmal auf mich wirken lassen - aber im Grunde scheint mir das nix Schlechtes zu sein ;-) .
{fim könnte auch sagen, es sei stereoid}
..........................................
PAUSE
Update coming soon!
...............................................................
Kurze Pausenunterbrechung
Wow!
Das kann Plots:
julia> using Plots
julia> pyplot()
Plots.PyPlotBackend()
julia> n = 100
100
julia> ts = range(0, stop=8π, length=n)
0.0:0.25386607301735703:25.132741228718345
julia> x = ts .* map(cos, ts)
100-element Array{Float64,1}:
0.0
0.2457293357057433
0.44368141953074
0.5511945544881852
0.535378636228072
0.37689004841714446
0.07247660470089555
-0.36395425184635477
-0.9018675768027828
-1.4962223060995836
⋮
-10.258743686131666
-4.783398738552129
1.123387372863821
7.085532910242319
12.715242610416697
17.638225743621895
21.518548847240854
24.081474899162842
25.132741228718345
julia> y = (0.1ts) .* map(sin, ts)
100-element Array{Float64,1}:
0.0
0.006375795325187411
0.02468577122153645
0.05255629461499901
0.08628658321770741
0.12120864107543958
0.15214711731821198
0.17393931329623008
0.18196993674187328
0.17267325896326916
⋮
-2.0699080304388078
-2.286059546179023
-2.358280318432286
-2.278722452218264
-2.049306351420552
-1.6818014276799718
-1.1972599042445233
-0.6248279418683662
-2.462298487963891e-15
julia> z = 1:n
1:100
julia> plot(x, y, z, zcolor=reverse(z), m=(10, 0.8, :blues, Plots.stroke(0)), leg=false, cbar=true, w=5)
julia> plot!(zeros(n), zeros(n), 1:n, w=10)
Aus dieser Anleitung, die ich mir demnächst auch mal zu Gemüte führe (-n muss!):
PyPlot - Plots
....................................................................................
Kurze, diesmal längere Pause
.......................................................................................................
Erleichterung!
MFCC lässt sich installieren (wird später gebraucht!):
julia> using Pkg
julia> Pkg.clone("https://github.com/JuliaDSP/MFCC.jl")
┌ Warning: Pkg.clone is only kept for legacy CI script reasons, please use `add`
└ @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.2/Pkg/src/API.jl:406
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General.git`
Cloning git-repo `https://github.com/JuliaDSP/MFCC.jl`
Updating git-repo `https://github.com/JuliaDSP/MFCC.jl`
Resolving package versions...
Installed CMakeWrapper ─ v0.2.3
Installed Parameters ─── v0.12.0
Installed CMake ──────── v1.1.2
Installed Blosc ──────── v0.5.1
Installed HDF5 ───────── v0.12.3
Updating `~/.julia/environments/v1.2/Project.toml`
[ca7b5df7] + MFCC v0.3.1 [`~/.julia/dev/MFCC`]
Updating `~/.julia/environments/v1.2/Manifest.toml`
[a74b3585] + Blosc v0.5.1
[631607c0] + CMake v1.1.2
[d5fb7624] + CMakeWrapper v0.2.3
[f67ccb44] + HDF5 v0.12.3
[ca7b5df7] + MFCC v0.3.1 [`~/.julia/dev/MFCC`]
[d96e819e] + Parameters v0.12.0
Building CMake → `~/.julia/packages/CMake/nSK2r/deps/build.log`
Building Blosc → `~/.julia/packages/Blosc/lzFr0/deps/build.log`
Building HDF5 ─→ `~/.julia/packages/HDF5/DktP4/deps/build.log`
julia> Pkg.add("MFCC")
Resolving package versions...
Installed MFCC ─ v0.3.1
Updating `~/.julia/environments/v1.2/Project.toml`
[ca7b5df7] ~ MFCC v0.3.1 [`~/.julia/dev/MFCC`] ⇒ v0.3.1
Updating `~/.julia/environments/v1.2/Manifest.toml`
[ca7b5df7] ~ MFCC v0.3.1 [`~/.julia/dev/MFCC`] ⇒ v0.3.1
julia> using MFCC
[ Info: Precompiling MFCC [ca7b5df7-6146-5dcc-89ec-36256279a339]
Kurzes Antesten:
julia> xxx = s[:,1]
192000-element Array{Float64,1}:
-0.01824820259192021
-0.01125228539136474
-0.04153991240738778
-0.05123484745441049
-0.023036363486810145
-0.027330282608304335
-0.11188138865010604
-0.19148065942295306
-0.18373479649243313
-0.1282304678237996
⋮
-0.02427196792029952
-0.014850975853321059
0.05568636127547756
-0.0035723452058249957
-0.02259397776055071
0.04742312996663212
-0.001614093972932574
0.01595831107596291
0.09108186853907925
julia> using WAV
julia> s, fs, nbits = wavread("/home/heide/python-wave-analysis/Train/333.wav")
julia> mfcc(xxx)
WARNING: importing deprecated binding DSP.TFFilter into MFCC.
WARNING: DSP.TFFilter is deprecated, use PolynomialRatio instead.
likely near REPL[32]:1
WARNING: DSP.TFFilter is deprecated, use PolynomialRatio instead.
likely near REPL[32]:1
WARNING: DSP.TFFilter is deprecated, use PolynomialRatio instead.
likely near REPL[32]:1
([57.4531468912109 -27.73316795343109 … 22.823570249214814 -1.4146078755582179; 58.82735802304498 -27.779058254429884 … 7.245296946487178 -3.159404151816054; … ; 57.83297135523631 -27.726655957446464 … -1.3990747768010916 -8.614757379535735; 59.19000060832642 -27.39098921955706 … 5.070660721460177 -4.713343945635979], [0.1626766103102681 0.050504398669389654 … 2.0957412418614467 1.0356297559012744; 0.009960126523007392 0.18173197089772247 … 2.1721591070611237 0.028258873617370926; … ; 0.4165337713097423 0.005178387690094411 … 0.5422838149048227 0.41372362799449836; 0.19831811582274833 0.2619970543796346 … 1.6145276365931778 3.162222639131572], Dict{String,Any}("wintime" => 0.025,"dither" => false,"nbands" => 20,"sr" => 16000.0,"lifterexp" => -22,"minfreq" => 0.0,"steptime" => 0.01,"maxfreq" => 8000.0,"bwidth" => 1.0,"usecmp" => false…))
julia> x3 = mfcc(xxx);
julia> typeof(x3)
Tuple{Array{Float64,2},LinearAlgebra.Adjoint{Float64,Array{Float64,2}},Dict{String,Any}}
julia> x3[1]
1198×13 Array{Float64,2}:
57.4531 -27.7332 -16.582 -1.89949 … -13.6614 22.8236 -1.41461
58.8274 -27.7791 -18.8798 -4.39089 2.1125 7.2453 -3.1594
59.384 -27.5139 -20.239 -7.59582 -11.893 3.57257 -1.2454
57.5924 -29.8153 -21.7553 -5.00514 -6.44092 6.66226 -0.362519
58.6192 -27.1755 -22.5674 -4.95148 -13.4815 7.47711 -3.414
58.1777 -25.8779 -18.7457 -2.27715 … -14.4897 7.23825 0.44233
59.1601 -25.2422 -20.533 -4.33352 -10.3032 2.55512 -12.4936
58.9033 -25.1229 -17.0571 -5.12279 -11.5265 3.61758 -10.7758
57.5654 -29.1325 -21.5958 -3.1881 -10.3754 -2.73956 -7.79718
57.8824 -27.8373 -24.0646 -9.69728 -7.89044 0.150403 -10.0823
⋮ ⋱ ⋮
57.4224 -30.8348 -23.3281 -6.86854 -5.58065 -1.73506 -15.3048
58.8938 -27.0019 -22.8276 -6.5307 … -5.35299 -0.070953 -9.29681
58.6552 -27.0932 -20.39 -8.49929 -8.92984 -4.03827 -12.4387
57.8852 -28.6076 -19.3512 -1.36395 -6.21622 -0.713756 -12.3264
58.4532 -29.9214 -24.5618 -9.67027 -6.64368 2.43899 -0.808132
59.2061 -26.3579 -22.372 -8.9025 -5.28982 9.99648 -3.69252
58.3069 -26.2992 -22.4711 -7.03852 … -1.8353 8.53192 -12.6489
57.833 -27.7267 -22.4424 -7.45244 -14.0228 -1.39907 -8.61476
59.19 -27.391 -22.6091 -7.12913 -2.06292 5.07066 -4.71334
julia> x3[2]
1198×256 LinearAlgebra.Adjoint{Float64,Array{Float64,2}}:
0.162677 0.0505044 0.403355 … 0.613062 2.09574 1.03563
0.00996013 0.181732 0.11426 1.91755 2.17216 0.0282589
0.0527713 0.0277758 0.123074 1.05397 4.79923 8.81025
0.0022218 0.00951892 0.10104 0.00977598 0.711681 0.0921455
0.00208415 0.02824 0.00133851 0.0368594 0.371424 0.0517954
0.0975392 0.0233548 0.0104162 … 5.84292 2.52921 0.864855
0.0538147 0.051267 0.0300786 3.32095 1.40499 0.741293
0.0806999 0.0680545 0.240274 0.536386 0.85953 1.09784
0.0567066 0.205926 0.109412 1.25816 0.580536 0.482968
0.0519538 0.0756904 0.0088313 0.128896 0.230359 2.02786
⋮ ⋱ ⋮
0.00746013 0.118017 0.10202 3.46549 3.55648 0.321447
0.0124312 0.0686797 0.0165666 … 0.0788692 0.770993 1.11052
0.0204843 0.00594839 0.0861691 6.58314 2.27032 0.737309
0.0340289 0.151567 0.157603 4.62076 3.11919 0.694483
0.00277104 0.239264 0.00892413 0.198986 1.37883 1.16463
0.00334233 0.00204725 0.0662016 6.38848 7.1443 1.65139
0.190099 0.0681049 0.0661751 … 1.91103 1.89093 1.40953
0.416534 0.00517839 0.0144417 1.35891 0.542284 0.413724
0.198318 0.261997 0.130956 0.00975552 1.61453 3.16222
julia> x3[3]
Dict{String,Any} with 16 entries:
"wintime" => 0.025
"dither" => false
"nbands" => 20
"sr" => 16000.0
"lifterexp" => -22
"minfreq" => 0.0
"steptime" => 0.01
"maxfreq" => 8000.0
"bwidth" => 1.0
"usecmp" => false
"modelorder" => 0
"fbtype" => :htkmel
"numcep" => 13
"preemph" => 0.97
"sumpower" => false
"dcttype" => 3
Sieht gut aus, nein, sieht super³ aus!!!
Damit kann ich weiterkomen.
....................................................................................
Kurze, diesmal wirklich längere Pause
.......................................................................................................
using DataFrames
using Statistics
using WAV
using MFCC
train = readtable("/home/heide/python-wave-analysis/train.csv")
Features = []
function features_train()
for i in 1:length(train[1])
ID = train[1][i]
Label = train[2][i]
println("ID = ", ID, " Label: ", Label)
Wavepath = string("/home/heide/python-wave-analysis/Train/",ID,".wav")
# println(Wavepath)
s,fs = wavread(Wavepath)
if length(s) > 0
x = s[:,1]
mfcc_40 = mfcc(x,numcep=40)
Feature = mean(mfcc_40[1],dims=1)
push!(Features,[Feature,Label])
end
end
end
features_train()
Features
using JLD
save("/home/heide/python-wave-analysis/mfcc_train.jld","Features",Features)
Fittschas = load("/home/heide/python-wave-analysis/mfcc_train.jld")
Fiiidshaas = load("/home/heide/python-wave-analysis/mfcc_train.jld","Features")
using ScikitLearn
@sk_import preprocessing: LabelEncoder
labelencoder = LabelEncoder()
# categories = [2 3 4 5 6 12 13]
categories = []
for i in 1:222 push!(categories,Fiiidshaas[i][2]) end
categories = reshape(categories, length(categories), 1)
categories = rotr90(categories)
trainy = Fiiidshaas
for col in categories
println(col)
# trainy[col] = fit_transform!(labelencoder, trainy[col])
end
Output-Ausschnibbelchen
Any[[48.89174563993598 -12.468320953416203 … -15.315635257377657 -30.149265181461388], "children_playing"]
Any[[27.246439429543436 -2.157660227022324 … -4.977422415148745 -5.217372138480881], "engine_idling"]
Any[[46.307125812937294 1.2312828965682379 … -77.8670944840281 2.9773274766281768], "children_playing"]
Any[[17.654358986623063 8.827567800965875 … -20.29742597626014 21.345671444696066], "engine_idling"]
Any[[13.031349892537957 16.366879350413488 … -39.15013659259602 39.57624988739062], "dog_bark"]
Any[[19.48381909419921 16.155030487841977 … -22.966191145562306 39.06398463853128], "siren"]
Any[[-26.535017862757183 -9.067298520068862 … 1.831011361115425 -21.925356957234683], "gun_shot"]
Any[[37.89084694988638 -14.132776777363183 … -15.479106659741054 -34.17403485225276], "air_conditioner"]
Any[[50.6156021966603 -10.933100302649404 … -21.875927187306722 -26.436995126419156], "engine_idling"]
julia> for col in categories
println(col)
# trainy[col] = fit_transform!(labelencoder, trainy[col])
end
car_horn
siren
children_playing
street_music
dog_bark
dog_bark
drilling
air_conditioner
jackhammer
drilling
children_playing
dog_bark
street_music
car_horn
air_conditioner
dog_bark
jackhammer
air_conditioner
jackhammer
siren
street_music
car_horn
street_music
jackhammer
jackhammer
street_music
dog_bark
air_conditioner
gun_shot
street_music
siren
street_music
drilling
children_playing
children_playing
dog_bark
drilling
children_playing
car_horn
children_playing
gun_shot
engine_idling
siren
jackhammer
street_music
street_music
jackhammer
children_playing
dog_bark
jackhammer
drilling
drilling
drilling
jackhammer
Ich erklär's morgen (vielleicht).
Noch ein paar Links:
A Complete Tutorial to Learn Data Science with Julia from Scratch Models - ScikitLearn.jl GitHub - JuliaIO/JLD.jl: Saving and loading julia variables while preserving native types How to save an NxNxN array (or Matrix) into a file in Julia (or Python)? - Stack Overflow Julia Language - Initialize an Empty Array | julia-lang Tutorial Arrays · The Julia Language Julia ASTs · The Julia Language Learn Julia in Y Minutes
Und ein ganz besonderer:
m00-www.pdf
Und noch eine für alle:
Ameisen: Eine für alle | ZEIT ONLINE
Kommentare
Kommentar veröffentlichen