View Source Scholar.Linear.LogisticRegression (Scholar v0.4.0)
Logistic regression in both binary and multinomial variants.
Time complexity is $O(N * K * I)$ where $N$ is the number of samples, $K$ is the number of features, and $I$ is the number of iterations.
Summary
Functions
Fits a logistic regression model for sample inputs x and sample
targets y.
Makes predictions with the given model on inputs x.
Calculates probabilities of predictions with the given model on inputs x.
Functions
Fits a logistic regression model for sample inputs x and sample
targets y.
Depending on number of classes the function chooses either binary or multinomial logistic regression.
Options
:num_classes(pos_integer/0) - Required. number of classes contained in the input tensors.:iterations(pos_integer/0) - number of iterations of gradient descent performed inside logistic regression. The default value is1000.:learning_loop_unroll(boolean/0) - Iftrue, the learning loop is unrolled. The default value isfalse.:optimizer- The optimizer name or {init, update} pair of functions (seePolaris.Optimizersfor more details). The default value is:sgd.:eps(float/0) - The convergence tolerance. If theabs(loss) < size(x) * :eps, the algorithm is considered to have converged. The default value is1.0e-8.
Return Values
The function returns a struct with the following parameters:
:coefficients- Coefficient of the features in the decision function.:bias- Bias added to the decision function.:mode- Indicates whether the problem is binary classification (:num_classesset to 2) or multinomial (:num_classesis bigger than 2). For binary classification set to:binary, otherwise set to:multinomial.
Examples
iex> x = Nx.tensor([[1.0, 2.0], [3.0, 2.0], [4.0, 7.0]])
iex> y = Nx.tensor([1, 0, 1])
iex> Scholar.Linear.LogisticRegression.fit(x, y, num_classes: 2)
%Scholar.Linear.LogisticRegression{
coefficients: Nx.tensor(
[
[2.5531527996063232, -0.5531544089317322],
[-0.35652396082878113, 2.3565237522125244]
]
),
bias: Nx.tensor(
[-0.28847914934158325, 0.28847917914390564]
)
}
Makes predictions with the given model on inputs x.
Output predictions have shape {n_samples} when train target is shaped either {n_samples} or {n_samples, 1}.
Examples
iex> x = Nx.tensor([[1.0, 2.0], [3.0, 2.0], [4.0, 7.0]])
iex> y = Nx.tensor([1, 0, 1])
iex> model = Scholar.Linear.LogisticRegression.fit(x, y, num_classes: 2)
iex> Scholar.Linear.LogisticRegression.predict(model, Nx.tensor([[-3.0, 5.0]]))
#Nx.Tensor<
s32[1]
[1]
>
Calculates probabilities of predictions with the given model on inputs x.
Examples
iex> x = Nx.tensor([[1.0, 2.0], [3.0, 2.0], [4.0, 7.0]])
iex> y = Nx.tensor([1, 0, 1])
iex> model = Scholar.Linear.LogisticRegression.fit(x, y, num_classes: 2)
iex> Scholar.Linear.LogisticRegression.predict_probability(model, Nx.tensor([[-3.0, 5.0]]))
#Nx.Tensor<
f32[1][2]
[
[6.470913388456623e-11, 1.0]
]
>