teleren/devto huggingface dataset:
Fundamentos de Machine Learning (Parte 2)
Tags: machinelearning, beginners, spanish
Published: 2022-10-06 14:18:19

# Algoritmos de clasificación
Los algoritmos de clasificación son una técnica de aprendizaje supervisado que se aplica en ML para asignarle una etiqueta a un dato dependiendo de su ubicación en un plano de coordenadas.
A diferencia de la clusterización o agrupamiento, en la clasificación es importante que conozcamos las etiquetas que el algoritmo asignará a los datos bajo evaluación.

##   Clasificadores lineales
Los algoritmos que realizan una clasificación lineal, dividen los datos a través de una línea. Esta línea básicamente representa la medida que determina si un data point pertenece a una clase o a otra. 
La línea funciona como un delimitador de áreas dentro del plano que contiene el data set, de tal manera que al ubicar un punto nuevo, podamos clasificarlo o ubicarlo dentro de una zona o área, que al final del día indicará a qué clase pertenece.
Cabe recordar que los ejes del plano no siempre serán 2 (plano bidimensional) pueden ser múltiples dimensiones, esto depende de la cantidad de features o características representativas que describen una clase o etiqueta.

## K nearest neighbors
En este algoritmo se parte del supuesto de que ya se cuenta con un conjunto de datos clasificados, podemos pensar en un plano de coordenadas con un conjunto de datos ubicados en él y dadas las ubicaciones de los mismos, ya sabemos a qué clase pertenecen.
Al recibir un valor o data point del cual no conocemos su etiqueta o clase, determinamos sus K vecinos más cercanos y de acuerdo a su cercanía con dichos vecinos, el data point se le asignará una clase o etiqueta.
En este algoritmo el valor de K corresponde al número de vecinos necesarios para que un vector o data point se le asigna la clase o etiqueta correspondiente a esos vecinos.
Si un data point no llega exactamente a tener K vecinos, entonces se le asigna la clase a la que pertenecen la mayor cantidad de vecinos más cercanos.
Por ejemplo, si K es igual a 5, con 3 vecinos de una clase es suficiente para que se le asigne dicha clase al data point entrante.
Este algoritmo es computacionalmente costoso, por lo tanto no se recomienda utilizar toda la población de datos para su ejecución, en vez de eso, se puede utilizar una muestra representativa.
Fundamentos de Machine Learning (Parte 1)
Tags: machinelearning, beginners, spanish
Published: 2022-10-06 14:17:28

Machine Learning es la capacidad de las computadoras de aprender a resolver problemas o dar soluciones apróximdas, sin ser explícitamente programadas para resolver dicho problema.

En machine learning el programa recibe datos en vez de instrucciones.

Machine Learning empieza con el Teorema de Bayes. El Tearema de Bayes nos permite incorporar conocimiento o experiencia nueva adquirida al procesamiento del calculo de nuevas probabilidades, dadas los eventos anteriores.

Machine Learning se puede utilizar en 2 escenarios, cuando no contamos con un algoritmo que solucione un problema o cuando deseamos encontrar patrones en un set de datos.

## Featured Vectors

Un elemento presente en la mayoría de algoritmos de machine learning, son los features vectores. Los features vectors son un mecanismo para combertir lo que conocemos o percibimos en el mundo real (que al final del día, serán los datos de aprendizaje del algoritmo) en valores numéricos que puedan ser utilizados como insumos del computo.

Por ejemplo representar colores con RGB.

El reto en esta fase es definir cuales son los aspectos relevantes para el algoritmos y cuales no.

Se debe intentar varias veces, qué valores se tienen que incluir y que valores se deben obviar o dejar por fuera. Siguiendo el principio de GIGO (garbage in, garbage out) es importante seleccionar bien los datos e incluso depurar datos encontrados.

## Distancia entre vectores
Otro elemento base de machine learning son las métricas de distancia entre vectores, las cuales nos permiten tener una forma de cuantificar que tan cercanos o lejanos estan los vectores que estamos incorporando al algoritmo. Esto conceptualmente nos puede permitir estimar que tan igual o que tan diferentes son los datos con los que se está alimentando el algoritmo.

En un algoritmo de optimización, se busca optimizar la distancia entre vectores.

Las distancias se miden de varias formas, por ejemplo la forma Euclidiana, la forma de Manhattan.
Falacias en el uso de datos
Tags: datascience, machinelearning, spanish
Published: 2022-10-06 14:15:39

### GIGO
El principio de garbage in garbage out, sostiene que, la calidad de los resultados obtenidos, es consecuente con la calidad de los datos de entrada para el proceso. En otras palabras, si le metemos basura al algoritmo, el resultado que obtendremos, también va a ser basura. Entonces, es importante tener cuidado con los datos de entrada para el algoritmo.
Por muy bueno, eficiente y acertado que sea el cómputo, de nada vale si los datos no tienen un valor conceptual o son datos inexactos.
### Gráficas engañosas
Imágenes o gráficas engañosas, cuando se juega con la escala se puede llegar a una conclusión incorrecta.
### Cum Hoc Ergo Propter Hoc
Cum Hoc Ergo Propter Hoc, hace referencia al error de asignar **causalidad** cuando en realidad hay solamente **correlación**. 
Para evitar este error es importante que pensemos out of the box, es decir tratar de ver que posible causas puede haber del fenómeno o evento que estoy analizando.
### Prejuicio en el muestreo
Para que un muestreo sea significativo y por ende, permita generar inferencias a partir del mismo, debemos asegurarnos que el muestreo sea representativo y aleatorio.
Se evita al asegurar que nuestra muestra no se enfoque en un subconjunto del universo, más bien es importante que nos preocupemos porque nuestra muestra sea representativa.
### Falacia del francotirador de TX
Básicamente esta falacia aparece al omitir la aleatoriedad al momento de obtener los datos. Adicionalmente, esta falacia surge cuando nos enfocamos en un detalle y sacamos conclusiones basados en dicho detalle, como resultado se sacan conclusiones sesgadas, que no toman en cuenta todo el universo de datos.
Es común caer en este error si, obtenemos datos antes de plantear una hipótesis.
No debemos adelantarnos a conseguir datos y luego plantear hipótesis. Primero debemos diseñar un experimento con hipótesis y luego extraer datos aleatorios y representativos.
### Porcentajes confusos
Hace referencia a porcentajes confusos por que no se le da contexto a los datos porcentuales.
### Falacia de regresión
Cuando un proceso estadístico fluctúa de manera natural, la falacia de la regresión es aquella en la que se concluye que, al ocurrir un evento extremo que represente una fluctuación en el comportamiento estadístico de los datos, si se toma una medida correctiva se podrá retornar los datos a su comportamiento normal y que si se presenta la corrección es precisamente debido a las medidas correctivas y no debido al proceso natural de regresión a la media.

Por ejemplo un atleta que le fue muy mal en una semana y cambia de alimentación y luego mejora. Puede llegar a creer que mejoró debido al cambio de alimentación y no debido a un proceso natural de regresión a la media.

Por supuesto, hay comportamientos estadísticos que no fluctúan de manera normal o de manera natural y que, dicho comportamiento sí puede ser afectado al introducir una medida "correctiva" que modifique los resultados obtenidos.
Tips para desarrollo y despliegue con contenedores de Docker
Tags: docker, beginners, spanish
Published: 2022-10-06 14:04:58

## Variables de entorno
Una buena práctica, no sólo en Docker sino en cualquier escenario, es el uso de variables de entorno y de esa manera evitar ingresar valores quemados (hard code) al código.
En el caso de Docker, podemos usar con facilidad variables de entorno de la siguiente manera.
```yaml
version: "3"
services:
	cms_app:
		image: strapi/strapi
		environment:
			DATABASE_CLIENT: ${DATABASE_CLIENT}
			DATABASE_NAME: ${POSTGRES_DB}
			DATABASE_HOST: ${DATABASE_HOST}
			DATABASE_PORT: ${DATABASE_PORT}
			DATABASE_USERNAME: ${DATABASE_USERNAME}
			DATABASE_PASSWORD: ${DATABASE_PASSWORD}
		volumes:
		- "${CMS_APP_PATH}:/srv/app"
		ports:
		- "1337:1337"
```
Como podemos notar en el archivo docker-compose anterior, en vez de insertar los valores de manera estática, utilizamos la forma **${VARIABLE_DE_ENTORNO}**
Las variables de entorno pueden estar definidas de manera directa en el sistema operativo, también pueden ser inyectadas a través de un administrador, este es el caso de las instancias de AWS. Localmente y para fines de desarrollo, podemos utilizar un archivo .env en el que definamos nuestras variables.
```
DATABASE_CLIENT=postgres
DATABASE_HOST=container_db
DATABASE_PORT=5432
DATABASE_USERNAME=my-user
DATABASE_PASSWORD=p4ssw0rd
```
## Comunicar contenedores definidos en diferentes archivo docker-compose
En algunas ocasiones, no tenemos toda nuestra infraestructura definida en un sólo archivo docker-compose, esto es especialmente cierto en fase de desarrollo y estamos comunicando aplicaciones totalmente diferentes.
Para poder establecer un canal de comunicación, creamos una red en el primer archivo docker-compose que ejecutemos.
```yaml
version: "3"
services:
	cms_app:
		image: strapi/strapi
		...
		ports: - "1337:1337"
		depends_on:
			- cms_db
		networks:
			- local_net
	cms_db:
		image: postgres
		...
		networks:
		- local_net

networks:
	local_net:
		name: multiple_containers_net 
```
Ahora tenemos la red creata disponible para ser "consumida" desde otros proyectos docker-compose de la siguiente manera.

```yaml
version: "3.8"
services:
	adminer:
		image: adminer
		...
		networks:
			- adminer_local_net
networks:
	adminer_local_net:
		external:
		name: multiple_containers_net
```
También es posible enlazarnos desde contenedores creados de manera directa con comandos de Docker, para lo cual usamos el subcomando network al ejecutar docker run.

    --network="multiple_containers_net"
HSC Result 2022 Marksheet
Published: 2022-10-06 14:04:29

[HSC Result 2022 Marksheet](https://educationsinbd.com/hsc-full-marksheet-with-number) with Number 2022 Download Online HSC Full Marksheet With Number 2022 Download Has Been Updated Now. <a href="https://educationsinbd.com/hsc-full-marksheet-with-number/" />HSC Result 2022</a> 

SSC Result 2022 Marksheet With Number <a href="[https://educationsinbd.com/ssc-result-marksheet-number/](https://educationsinbd.com/ssc-result-marksheet-number/)" />SSC Result 2022 </a>
JAVA SWING Cheat Sheet: JLabel Class
Tags: java, beginners, programming
Published: 2022-10-06 14:03:14

Following is the declaration for javax.swing.JLabel class −
Following are the fields for javax.swing.JLabel class

`protected Component labelFor`

- JLabel() - Creates a JLabel instance with no image and with an empty string for the title.
- JLabel(Icon image) - Creates a JLabel instance with the specified image.
- JLabel(Icon image, int horizontalAlignment) - Creates a JLabel instance with the specified image and horizontal alignment.
- JLabel(String text) - Creates a JLabel instance with the specified text.
- JLabel(String text, Icon icon, int horizontalAlignment) - Creates a JLabel instance with the specified text, image, and horizontal alignment.
- JLabel(String text, int horizontalAlignment) - Creates a JLabel instance with the specified text and horizontal alignment.

> [Swing Cheat Sheet](https://simplecheatsheet.com/tag/swing-cheat-sheet/)
What is Web3
Tags: web3
Published: 2022-10-06 14:01:47

Hello guys this is my first post.

Today I see people in Twitter discussing about web3 and they say that people should replace web2 apps with web3 ones. However,what makes me confused is that those "web2" apps (for example Twitter and GitHub) are what we actually use in our daily life.
Can anyone make a short description of Web3 and "decentralization" to let me understand these words better? If I need to share my code, should I choose Radicle instead of GitHub?
Thanks for your help!
Manejo de errores en python
Tags: python, beginners, spanish
Published: 2022-10-06 13:43:33

La manera de leer los Traceback al presentarse un error, es leer de abajo hacia arriba. Por lo general, la última línea es la excepción que se presentó, posteriormente de abajo hacia arriba la segunda línea contiene, el archivo, la línea de código y el módulo en el que se presentó el error.

Cabe señalar que, si en la función en la que se presentó el error, no hay un manejador de excepciones, python eleva, es decir transfiere el error a la función desde la cual se llamo a la función en la que se presentó el error. Este proceso ocurre iterativamente hasta que suceda la primera de 2 cosas, o se encuentra un manejador de excepciones o se llega hasta la función main y por ende se corta la ejecución del programa, razón por la cual en python la primera línea de arriba hacia a abajo dice "most recent call last", dando a entender que el origen del error se encuentra hasta el final del Traceback.

## Manejo de excepciones

**try, except**

```python
try:
    palindrome(1)
except TypeError:
    print("Sólo se puede ingresar cadenas de texto")
```
En el bloque anterior, python ejecutará el bloque de código dentro de la instrucción try y sólo si se presenta una excepción del tipo TypeError se ejecutará lo que se encuentra dentro del except. Cabe señalar que si se presenta una excepción de otro tipo, no se ejecutará el código dentro de except.

**raise**
esta función nos permite elevar una excepción el tipo que nos parezca más conveniente y luego dejar que el manejador de errores except, haga lo propio con el tipo de error que hemos elevado.

```python
try:
    # otro código
    raise ValueError("Descripción del error")
except ValueError as err:
    print(err)
    # más código
```

**finally**
Es una instrucción que se ejecuta al final de un try y de un except, la ejecución dentro de finally es indistinta de que ocurra un error o no.

```python
try:
    f = open("archivo.txt")
    # otro código
finally:
    f.close()
```

**assert statement**
Permiten manejar flujos de código a través de encapsularlos en aserciones, es decir, expresiones que esperamos que sean verdaderas para continuar con ejecución del programa y en caso contrario, lanzamos una excepción.

```python
def palindrome (string):
    assert len(string) > 0, "No se puede ingresar una cadena vacía"
    return string == string [::-1]

print(palindrome(""))
```

Resultará en
```
AssertError: No se puede ingresar una cadena vacía
```
Tips de uso de list y diccionarios en python
Tags: python, beginners, spanish
Published: 2022-10-06 13:49:41

## Lists y Dict anidados
Debido a que en python todo es un objeto, es posible realizar listas anidades o listas que contienen diccionarios e incluso se puede crear diccionarios que contienen listas.

```python
my_list_containing_dictionaries = [
    {"firstname":"Pedro", "lastname":"Perez"},
    {"firstname":"Pablo", "lastname":"Marmol"},
    {"firstname":"Joe", "lastname":"Doe"},
    {"firstname":"Juan", "lastname":"Garcia"},
]

my_dictionary_containing_lists = {
    "natural_numbers":[1,2,3,4,5,6],
    "floating_numbers":[1.1,2.3,3.5,4.1,5.7,6.9],
}
```
## List comprehensions
Proceso para llenar una lista con los números del 1 al 100 elevados al cuadrado si no son divisibles exactamente entre 3.
Antes

```python
square = []
# range va hasta el 101 porque el segundo argumento de la function range no es inclusivo en el conteo
for i in range(1,101):
    if i % 3 != 0:
        square.append(i**2)
```

Después, con list comprehensions

```python
square = [i**2 for i in range(1,101) if i%3 != 0]
```
Forma general
[element for element in iterable if condition]

## Dictionary comprehensions

```python
my_dict = {i:i**3 for i in range(1,101) if i % 3 !- 0}
```

Forma general
{key:value for element in iterable if condition}
Comandos usados comunmente en PIP
Tags: python, beginners
Published: 2022-10-06 13:48:24

PIP es el gestor de modulos de python. Al igual que NPM en nodejs o composer en PHP, nos permite instalar dependencias en nuestros proyectos.
A continuación veremos algunos de los comandos más populares en PIP

 - **freeze** pip freeze nos permite ver una lista de los modulos o paquetes instalados en nuestro enviroment de python. Adicionalmente, si ingresamos el comando *pip freeze > requirements.txt* podremos exportar nuestro listado de dependencias a un archivo de text plano. Posteriormente, para instalar las dependencias a partir del texto plano exportado, utilizamos el comando, *pip install -r requirements.txt*
 - **install** pip install nos permite agregar o instalar dependencias.
Manejo avanzado de funciones
Tags: python, spanish
Published: 2022-10-06 13:44:38

## Lambda o funciones anónimas

```python
palindrome = lambda string: string == string[::-1]

print(palindrome('ana'))
```

## Funciones de orden superior
Son funciones que reciben como parámetro funciones que han de ser ejecutadas dentro de la función contenedora.
Un buen ejemplo de las funciones de orden superior, es la función filter, map y reduce

```python
my_list = [1,4,5,6,9,13,21]

odd = list( filter(lambda x: x%2 != 0, my_list) )

print(odd)
```

```python
my_list = [1,4,5,6,9,13,21]

squares = list( map(lambda x: x**2, my_list) )

print(squares)
```

```python
from functools import reduce

my_list = [1,4,5,6,9,13,21]

reduced = reduce(lambda a, b: a * b, my_list)

print(reduced)
```
Manejo básico de archivos en python
Tags: python, beginners, spanish
Published: 2022-10-06 13:42:36

En python, la manipulación de archivos viene dada en los siguientes tipos de manipulación.

 - **r** Solo lectura
-   **r+**  Lectura y escritura
-   **w**  Solo escritura. Sobre escribe el archivo si existe. Crea el archivo si no existe
-   **w+**  Escritura y lectura. Sobre escribe el archivo si existe. Crea el archivo si no existe
-   **a**  Añadido (agregar contenido). Crea el archivo si éste no existe
-   **a+**  Añadido (agregar contenido) y lectura. Crea el archivo si éste no existe.

La estructura o formato de la instrucción en python para manigular archivos, se presenta de la siguiente manera

    with  open(<ruta>, <modo_de_manipulación>) as <nombre> :
Fundamentos de Python (Parte 2)
Tags: python, beginners, spanish
Published: 2022-10-06 13:40:29

# Estructuras de datos en Python

## Listas

En su forma básica, agrupa objetos al incluirlos dentro de corchetes []
```python
    mi_lista = [1,2,'tres']
```
Se accede al elemento de una lista mediante el número índice del elemento deseado.
```python
    mi_lista[0]
```
Se añaden elementos a la lista mediante el método append
```python
    mi_lista.append(4)
```
Se eliminan elementos mediante el método pop, se incluye como parámetro, el índice del elemento que se desea eliminar
```python
    mi_lista.pop(1)
```
Se puede recorrer una lista mediante la instrucción for
```python
    for mi_elemento in mi_lista: # comando dentro del ciclo
```
Finalmente, las listas en python permiten el uso de slices "::"

Las listas se pueden sumar o combinar al usar el operador +
```python
    mi_lista1 + mi_lista2
```
## Tuplas
Se declara una tupla con el comando
```python
    mi_tupla = ()
```
Es una lista inmutable, no es posible agregar ni remover elemento de la lista una vez ha sido inicializada.
Su característica principal es que al ser inmutable, operarlo es mucho más rápido.

## Diccionarios

Se declara un diccionario con la instrucción
```python
    mi_dicc = {}
```
Un diccionario es una estructura de datos del tipo llave valor.
```python
    mi_dicc = {
    'llave1':1,
    'llave2':2,
    'llave3':3
    }
```
Se acceden a un elemento a través de la llave.
```python
    mi_dicc['llave1']
```
Se recorre de la siguiente manera
```python
    for pair in mi_dicc.keys(): # pair tendrá el valor de las keys
    for pair in mi_dicc.values(): # pair tendrá el valor de los values
    for key, value for dicc.items()
```
Here’s why you should target zero-volume keywords - princessniche_
Tags: webdev, seo, beginners
Published: 2022-10-06 13:39:36

####   Original Tweet From  [@princessniche_](https://twitter.com/princessniche_)
{% embed https://twitter.com/princessniche_/status/1577539666844450816 %}
An SEO secret that few people talk about is zero-volume keywords.

These keywords are mostly overlooked but have the potential to bring HUGE traffic to your site.

Here’s why you should target zero-volume keywords: 👇🧵 

So what are zero-volume keywords?

These are keywords that most SEO tools say have zero search volume per month.

Sometimes these tools are right but often they’re wrong. 

Here’s an example of a supposedly ‘zero-volume’ keyword that I went after on one of my sites.

It gets over 1,400 pageviews every month. ![Twitter Image 0](https://pbs.twimg.com/media/FeSL-WvacAA2k00.jpg) 

What does this mean for you?

This means that there are a ton of keywords out there that will bring you traffic that most of your competitors are overlooking.

Essentially these are high volume, low competition keywords.

What’s not to like? 

Now here’s the hard part.

How do you know if these keywords ACTUALLY get traffic or if they’re genuinely zero volume?

Let’s use the example ‘what’s it like living in fort lauderdale’ 

### 1/. Check if Google is suggesting the keyword.

When you type it into Google, does Google try to autocomplete it before you’ve finished?

If so, then great! This means that people are definitely searching for this keyword. ![Twitter Image 1](https://pbs.twimg.com/media/FeSMABvaEAAbrU_.jpg) 

### 2/. Look out for forums.

If there are lots of forums in the SERPs asking this question with high engagement then this is a great indication that people want this answer.

You can also search in a forum yourself to see if people are regularly asking this question. ![Twitter Image 2](https://pbs.twimg.com/media/FeSMAuqacAAT81Y.jpg) 

### 3/. Check if the results on page 1 are getting traffic.

I like to use the Chrome extension ‘Keywords Everywhere’ to give me an indication of if the pages get traffic or not.

As you can see, it’s estimating that this forum ranking on page 1 gets traffic every month. ![Twitter Image 3](https://pbs.twimg.com/media/FeSMBW0acAAH1m7.jpg) 

### 4/. Use a keyword tool to search for similar keywords.

If you find other similar keywords that are getting traffic then great!

It looks like people are definitely searching for this topic in other ways but the keyword you found could be a good way to steal some of that traffic. ![Twitter Image 4](https://pbs.twimg.com/media/FeSMB_QaMAAzo1L.jpg) 

If all of the above looks good then it seems like you’ve found yourself a decent keyword!

I’d say go for it! 


#### Click [Here](https://www.knowledge-twitter.com/?utm_source=dev.to)  For More Posts Like This [https://www.knowledge-twitter.com](https://www.knowledge-twitter.com/?utm_source=dev.to)
Fundamentals of useState
Tags: react, beginners
Published: 2022-10-06 13:36:47

This hook enables the functionality of managing the state in function components.

```jsx
import React, { useState } from 'react'

const Header = () => {
    //setting initial state up and getting state variable
    // and function that is going to manage it
    const [darkModeActive, setDarkModeActive] = useState(false)
    // This inner function makes use of the setDarkModeActive to set the new state.
    const handleClick = () => {
        setDarkModeActive(!darkModeActive)
    }
    return (
        <div className="Header">
            <h1>Crypto Swag</h1>
            <button 
                type="button" 
                onClick={
                    handleClick}>{darkModeActive ? 
                    'Light Mode' 
                    : 'Dark Mode'}
            </button>
        </div>
    )
}

export default Header
```

In the above example, Header is a component and we are using useState to control the darkMode of a website.

useState hook receives the initial state we want to control and then it returns an array with 2 elements. First element is the variable containing the current state and a second element is the function on charge of changing the state itself.