Commit 9b06f037 authored by geobumac's avatar geobumac

Merge branch 'master' into gaspar

# Conflicts:
#	07-LinearAlgebra&Learning.ipynb
parents bbb48d24 609b6346
......@@ -978,10 +978,124 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": []
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Inversa(C)=\n",
" [[-2. -2.07692308 -0.38461538]\n",
" [ 1. 1.07692308 0.38461538]\n",
" [-0. -0.23076923 -0.15384615]]\n",
"\n",
"np.linalg.inv(C)=\n",
" [[-2. -2.07692308 -0.38461538]\n",
" [ 1. 1.07692308 0.38461538]\n",
" [-0. -0.23076923 -0.15384615]]\n",
"Trying:\n",
" A = np.array([[2, 4, 3], [0, 1, -1], [3, 5, 7]])\n",
"Expecting nothing\n",
"ok\n",
"Trying:\n",
" Inversa(A)\n",
"Expecting:\n",
" array([[ 4. , -4.33333333, -2.33333333],\n",
" [-1. , 1.66666667, 0.66666667],\n",
" [-1. , 0.66666667, 0.66666667]])\n",
"ok\n",
"Trying:\n",
" C = np.array([[1, 3, 5], [-2, -4, -5], [3, 6, 1]])\n",
"Expecting nothing\n",
"ok\n",
"Trying:\n",
" Inversa(C)\n",
"Expecting:\n",
" array([[-2. , -2.07692308, -0.38461538],\n",
" [ 1. , 1.07692308, 0.38461538],\n",
" [-0. , -0.23076923, -0.15384615]])\n",
"ok\n",
"1 items had no tests:\n",
" __main__\n",
"1 items passed all tests:\n",
" 4 tests in __main__.Inversa\n",
"4 tests in 2 items.\n",
"4 passed and 0 failed.\n",
"Test passed.\n"
]
},
{
"data": {
"text/plain": [
"TestResults(failed=0, attempted=4)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"import numpy as np\n",
"import sys\n",
"\n",
"def Inversa(A):\n",
" '''Función que calcula la inversa (si existe) de una matriz de n x n mediante el metodo de eliminación\n",
" de Gauss-Jordan.\n",
" \n",
" Args: \n",
" A (np.array): Lista de Arreglos que representa la matriz con valores tipo float.\n",
" Se dice que la matriz inversa A-1 tiene inversa, si A-1*A = I, donde I es la matriz identidad \n",
" \n",
" Returns:\n",
" np.array: La matriz inversa de A\n",
" \n",
" Ejemplos:\n",
" >>> A = np.array([[2, 4, 3], [0, 1, -1], [3, 5, 7]])\n",
" >>> Inversa(A)\n",
" array([[ 4. , -4.33333333, -2.33333333],\n",
" [-1. , 1.66666667, 0.66666667],\n",
" [-1. , 0.66666667, 0.66666667]])\n",
" \n",
" >>> C = np.array([[1, 3, 5], [-2, -4, -5], [3, 6, 1]])\n",
" >>> Inversa(C)\n",
" array([[-2. , -2.07692308, -0.38461538],\n",
" [ 1. , 1.07692308, 0.38461538],\n",
" [-0. , -0.23076923, -0.15384615]])\n",
" '''\n",
" if len(A) != len(A[0]):\n",
" print('La matriz no es cuadrada, por lo tanto NO INVERTIBLE estrictamente')\n",
" else:\n",
" A = np.array(A, dtype=np.float64)\n",
" n = len(A)\n",
" Inver = np.eye(n, dtype=np.float64)\n",
" #Método L por eliminación de Gauss, p es el pivote\n",
" for p in range(n-1):\n",
" if A[p,p] == 0: #Verifica que el pivote no sea cero\n",
" sys.exit('La matriz es singular, por lo tanto NO INVERTIBLE')\n",
" A[p,:], Inver[p,:] = A[p,:] / A[p,p], Inver[p,:] / A[p,p]\n",
" for k in range(p+1,n):\n",
" A[k,:], Inver[k,:] = A[p,:] * A[k,p] - A[k,:], Inver[p,:] * A[k,p] - Inver[k,:]\n",
" #Método U por eliminación de Gauss\n",
" for p in reversed(range(1,n)):\n",
" if A[p,p] == 0: #Verifica que el pivote no sea cero\n",
" sys.exit('La matriz es singular, por lo tanto NO INVERTIBLE')\n",
" A[p,:], Inver[p,:] = A[p,:] / A[p,p], Inver[p,:] / A[p,p]\n",
" for k in reversed(range(p)):\n",
" A[k,:], Inver[k,:] = A[p,:] * A[k,p] - A[k,:], Inver[p,:] * A[k,p] - Inver[k,:]\n",
" return Inver\n",
"\n",
"C = np.array([[1, 3, 5],\n",
" [-2, -4, -5],\n",
" [3, 6, 1]], dtype=float)\n",
"\n",
"print('Inversa(C)=\\n',Inversa(C))\n",
"print('\\nnp.linalg.inv(C)=\\n', np.linalg.inv(C))\n",
"import doctest\n",
"doctest.testmod(verbose=True)\n"
]
},
{
"cell_type": "markdown",
......
......@@ -523,6 +523,131 @@
"Nota: Utilice la función 4.6 del primer examen cuyo enunciado original era \"Escribe una funcion que reciba un texto y regrese un diccionario ordenado por frecuencias de cada palabra en el texto.\"\n"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"from collections import Counter\n",
"\n",
"def removerpunt(s):\n",
" s = re.sub(r\"[,|\\.|:|?|=|​]\", \"\", s)\n",
" return s\n",
"\n",
"def tf_dist(docs, M):\n",
" '''la distribución de frecuencias de n-gramas\n",
" \n",
" Args\n",
" docs: list([texto1, texto2, ...]) lista de textos.\n",
" M: las M palabras más frecuentes, cota.\n",
" \n",
" return\n",
" tf_dic: dict con palabras como llave y frecuencia como valor.\n",
" '''\n",
"\n",
" corpus = ' '.join(docs)\n",
"\n",
" # quitar la puntuación\n",
" sin_pun = removerpunt(corpus)\n",
" # minúsculas\n",
" minusculas = sin_pun.lower()\n",
" # lista de palabras\n",
" lista_de_pals = minusculas.split(' ')\n",
" # frecuencia de cada palabra\n",
" tf_dic = Counter(lista_de_pals)\n",
"\n",
" return tf_dic"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Counter({'de': 34, 'la': 24, '': 18, 'en': 12, 'el': 11, 'las': 10, 'que': 8, 'con': 7, 'es': 6, 'palabras': 5, 'se': 5, 'a': 5, 'del': 5, 'quijote': 5, 'una': 4, 'un': 4, 'más': 4, 'y': 4, 'por': 4, 'primera': 4, 'o': 3, 'etiquetas': 3, 'para': 3, 'principales': 3, 'don': 3, 'novela': 3, 'su': 3, 'parte': 3, 'obra': 3, 'nube': 2, 'visual': 2, 'tamaño': 2, 'mayor': 2, 'sitio': 2, 'web': 2, 'son': 2, 'clave': 2, 'ser': 2, 'visualizar': 2, 'trabajar': 2, 'título': 2, 'ingenioso': 2, 'mancha': 2, '1605': 2, 'literatura': 2, '1615': 2, 'segunda': 2, 'cuatro': 2, 'representación': 1, 'conforman': 1, 'texto': 1, 'donde': 1, 'aparecen': 1, 'frecuencia\\n': 1, 'uno': 1, 'sus': 1, 'usos': 1, 'visualización': 1, 'modo': 1, 'los': 1, 'temas': 1, 'frecuentes': 1, 'muestren': 1, 'prominencia': 1, 'suelen': 1, 'estar': 1, 'ordenadas': 1, 'alfabéticamente': 1, 'ocasiones': 1, 'agrupadas': 1, 'semánticamente': 1, 'importancia': 1, 'etiqueta': 1, 'muestra': 1, 'fuente': 1, 'y/o': 1, 'color3\\n': 1, 'pesar': 1, 'usadas': 1, 'principalmente': 1, 'contexto': 1, 'educativo': 1, 'van': 1, 'ganando': 1, 'terreno': 1, 'ya': 1, 'muy': 1, 'útiles': 1, 'contenido': 1, 'ideas': 1, 'tema4': 1, 'ellas': 1, 'estimula': 1, 'inteligencias': 1, 'lingüística': 1, 'vez': 1, 'desarrolla': 1, 'capacidad': 1, 'síntesis5': 1, 'manchaa': 1, 'escrita': 1, 'español': 1, 'miguel': 1, 'cervantes': 1, 'saavedra': 1, 'publicada': 1, 'hidalgo': 1, 'comienzos': 1, 'destacada': 1, 'española': 1, 'universal': 1, 'además': 1, 'leída': 1, 'después': 1, 'biblia12': 1, 'apareció': 1, 'continuación': 1, 'caballero': 1, 'publicó': 1, 'dividido': 1, 'partes;': 1, 'pero': 1, 'al': 1, 'aparecer': 1, 'calidad': 1, 'quedó': 1, 'revocada': 1, 'hecho': 1, 'partición': 1, 'secciones': 1, 'volumen': 1, 'publicado': 1, 'diez': 1, 'años': 1, 'antes': 1, 'cervantes3\\n': 1, 'genuinamente': 1, 'desmitificadora': 1, 'tradición': 1, 'caballeresca': 1, 'cortés': 1, 'tratamiento': 1, 'burlesco': 1, 'representa': 1, 'moderna': 1, 'polifónica;': 1, 'como': 1, 'tal': 1, 'ejerció': 1, 'enorme': 1, 'influjo': 1, 'toda': 1, 'narrativa': 1, 'europea': 1, 'considerarse': 1, '«el': 1, 'mejor': 1, 'trabajo': 1, 'literario': 1, 'jamás': 1, 'escrito»': 1, 'encabezó': 1, 'lista': 1, 'mejores': 1, 'obras': 1, 'literarias': 1, 'historia': 1, 'estableció': 1, 'votaciones': 1, 'cien': 1, 'grandes': 1, 'escritores': 1, '54': 1, 'nacionalidades': 1, 'petición': 1, 'club': 1, 'noruego': 1, 'libro': 1, '2002;': 1, 'así': 1, 'fue': 1, 'única': 1, 'excepción': 1, 'estricto': 1, 'orden': 1, 'alfabético': 1, 'había': 1, 'dispuesto4': 1})\n",
"dict_keys(['una', 'nube', 'de', 'palabras', 'o', 'etiquetas', 'es', 'representación', 'visual', 'las', 'que', 'conforman', 'un', 'texto', 'en', 'donde', 'el', 'tamaño', 'mayor', 'para', 'aparecen', 'con', 'más', 'frecuencia\\n', '', 'uno', 'sus', 'usos', 'principales', 'la', 'visualización', 'sitio', 'web', 'modo', 'los', 'temas', 'frecuentes', 'se', 'muestren', 'prominencia', 'son', 'clave', 'suelen', 'estar', 'ordenadas', 'alfabéticamente', 'ocasiones', 'agrupadas', 'semánticamente', 'importancia', 'etiqueta', 'muestra', 'fuente', 'y/o', 'color3\\n', 'a', 'pesar', 'ser', 'usadas', 'principalmente', 'contexto', 'educativo', 'van', 'ganando', 'terreno', 'ya', 'muy', 'útiles', 'visualizar', 'del', 'contenido', 'trabajar', 'ideas', 'tema4', 'ellas', 'estimula', 'inteligencias', 'lingüística', 'y', 'vez', 'desarrolla', 'capacidad', 'síntesis5', 'don', 'quijote', 'manchaa', 'novela', 'escrita', 'por', 'español', 'miguel', 'cervantes', 'saavedra', 'publicada', 'su', 'primera', 'parte', 'título', 'ingenioso', 'hidalgo', 'mancha', 'comienzos', '1605', 'obra', 'destacada', 'literatura', 'española', 'universal', 'además', 'leída', 'después', 'biblia12', '1615', 'apareció', 'continuación', 'segunda', 'caballero', 'publicó', 'dividido', 'cuatro', 'partes;', 'pero', 'al', 'aparecer', 'calidad', 'quedó', 'revocada', 'hecho', 'partición', 'secciones', 'volumen', 'publicado', 'diez', 'años', 'antes', 'cervantes3\\n', 'genuinamente', 'desmitificadora', 'tradición', 'caballeresca', 'cortés', 'tratamiento', 'burlesco', 'representa', 'moderna', 'polifónica;', 'como', 'tal', 'ejerció', 'enorme', 'influjo', 'toda', 'narrativa', 'europea', 'considerarse', '«el', 'mejor', 'trabajo', 'literario', 'jamás', 'escrito»', 'encabezó', 'lista', 'mejores', 'obras', 'literarias', 'historia', 'estableció', 'votaciones', 'cien', 'grandes', 'escritores', '54', 'nacionalidades', 'petición', 'club', 'noruego', 'libro', '2002;', 'así', 'fue', 'única', 'excepción', 'estricto', 'orden', 'alfabético', 'había', 'dispuesto4'])\n",
"dict_values([4, 2, 34, 5, 3, 3, 6, 1, 2, 10, 8, 1, 4, 1, 12, 1, 11, 2, 2, 3, 1, 7, 4, 1, 18, 1, 1, 1, 3, 24, 1, 2, 2, 1, 1, 1, 1, 5, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 5, 1, 2, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 3, 5, 1, 3, 1, 4, 1, 1, 1, 1, 1, 3, 4, 3, 2, 2, 1, 2, 1, 2, 3, 1, 2, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n"
]
}
],
"source": [
"wikis = [\n",
" u'''Una nube de palabras o nube de etiquetas es una representación visual de las palabras que conforman un texto, en donde el tamaño es mayor para las palabras que aparecen con más frecuencia.\n",
" Uno de sus usos principales es la visualización de las etiquetas de un sitio web, de modo que los temas más frecuentes en el sitio se muestren con mayor prominencia. Las etiquetas son palabras clave que suelen estar ordenadas alfabéticamente o, en ocasiones, agrupadas semánticamente. La importancia de una etiqueta se muestra con el tamaño de la fuente y/o color.3​\n",
" A pesar de ser usadas principalmente en la web, en el contexto educativo van ganando terreno ya que son muy útiles para visualizar las palabras clave del contenido a trabajar o para visualizar las ideas principales de un tema.4​ Trabajar con ellas estimula las inteligencias lingüística y visual a la vez que desarrolla la capacidad de síntesis.5''',\n",
" u'''Don Quijote de la Manchaa​ es una novela escrita por el español Miguel de Cervantes Saavedra. Publicada su primera parte con el título de El ingenioso hidalgo don Quijote de la Mancha a comienzos de 1605, es la obra más destacada de la literatura española y de las principales de la literatura universal, además de ser la más leída después de la Biblia.1​2​ En 1615 apareció su continuación con el título de Segunda parte del ingenioso caballero don Quijote de la Mancha. El Quijote de 1605 se publicó dividido en cuatro partes; pero al aparecer el Quijote de 1615 en calidad de Segunda parte de la obra, quedó revocada de hecho la partición en cuatro secciones del volumen publicado diez años antes por Cervantes.3​\n",
" Es la primera obra genuinamente desmitificadora de la tradición caballeresca y cortés por su tratamiento burlesco. Representa la primera novela moderna y la primera novela polifónica; como tal, ejerció un enorme influjo en toda la narrativa europea. Por considerarse «el mejor trabajo literario jamás escrito», encabezó la lista de las mejores obras literarias de la historia, que se estableció con las votaciones de cien grandes escritores de 54 nacionalidades a petición del Club Noruego del Libro en 2002; así, fue la única excepción en el estricto orden alfabético que se había dispuesto.4​'''\n",
"]\n",
"\n",
"d = tf_dist(wikis, 50)\n",
"\n",
"print(d)\n",
"\n",
"print(d.keys())\n",
"print(d.values())\n"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hola mundo adios mundo\n"
]
}
],
"source": [
"import re\n",
"\n",
"def removerpunt(s):\n",
" s = re.sub(r\"[,|\\.|:|?|=]\", \"\", s)\n",
" return s\n",
"\n",
"print(removerpunt('Hola mundo, adios mundo.'))"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mundo hola mundo adios mundo\n",
"mundo hola mundo adios mundo\n",
"['mundo', 'hola', 'mundo', 'adios', 'mundo'] <class 'list'>\n",
"mundo hola mundo adios mundo <class 'str'>\n",
"3\n"
]
}
],
"source": [
"original= 'Mundo, hola mundo, adios mundo.'\n",
"sin_pun= removerpunt(original)\n",
"print(sin_pun)\n",
"lows =sin_pun.lower()\n",
"print(lows)\n",
"\n",
"lista_de_pals=lows.split(' ')\n",
"\n",
"print(lista_de_pals, type(lista_de_pals))\n",
"palabras = ' '.join(lista_de_pals)\n",
"print(palabras, type(palabras))\n",
"print(lista_de_pals.count('mundo'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment