How do I generate a new netmodel zip file of ML.NET Text Classification Scenario? - ml.net

I have a project that a user can create a new Model for text classification, it is like a user can create many models for text classification. Then I created an ML Model in the project and I don't know how to implement a method for this that can generate a new NetModel zip file after a certain user trained the model.
To visualize
User
|
---- Create New Model
|
----- Train the Model and save a new NetModel zip file for User
Folder Project:
ML
| ---- Model.consumption.cs
| ---- Model.training.cs
| ---- ModelNet.zip (this is mine for testing predictions)
| ---- User1ModelNet.zip (expected output after training by User1)
| ---- User2ModelNet.Zip (expected output after training by User2)

Related

Django - return all associated rows for distinct results set with postgres backend

I have data in the following form:
collection_name | type | manufacturer | description | image_url
---------------------------------------------------------------------------
beach | bed | company a | nice bed | 1.jpg
beach | king bed | company a | nice bed | 1.jpg
beach | nightstand | company a | nice ns | 1.jpg
grass | chest | company a | nice chest | 2.jpg
apple | chest | company a | nice chest | 3.jpg
fiver | chest | company b | good chest | 4.jpg
What I need to do, is select all images and only return each image once (distinct), but then return non-distinct row for each image.
My goal is to ensure I display each image only once in my template, but show all records associated with each image.
In the example above, 1.jpg is one image that would show both beds and the nightstand in one image. I would like to show such an image and list associated products with it.
I have seen similar questions, although asking at the SQL/db level and not asking for a pure django solution.
The query I have been using in my view has been something like:
products = product.objects.filter(collection_name=name)
and then iterating over products, retrieving image_url like so:
{% for instance in products %}
{{ instance.image_url }}
{{ endfor }}
I've tried various attempts to limit repeating images in my template, but none have really worked, and attempts to do so in my view have not been successful.
What is the correct way to approach this?
Edit: A relevant excerpt from my models to match the sample data above:
class Product(models.Model):
collection_name = models.TextField(null='true',blank='true')
type = models.TextField(null='true',blank='true')
manufacturer = models.TextField(null='true',blank='true')
description = models.TextField(null='true',blank='true')
image_url = models.TextField(null='true',blank='true')
Edit: My idea of views and logic to attempt to solve this, after reading the docs and looking at other questions (no answers):
Pass the product_id of any product in a collection to the view. Then obtain the collection_name field of a record based on the id field:
collectionname = product.objects.filter(id=id).values('collection_name').distinct()
Then, when we have the collection_name field, return all products for a given collection_name:
products = product.objects.filter(collection_name__in=collectionname)
Then, finally, return a list of image_url results for a given collection name, removing duplicates:
images = product.objects.filter(collection_name__in=collectionname).values('image_url').distinct()
I think this should work, in theory...
Edit:
Currently attempting the following based on Juancarlos' answer below:
products = product.objects.filter(collection_name=name)
collectionname = product.objects.filter(id=id).values('collection_name').distinct()
images = product.objects.filter(collection_name__in=collectionname).values("image_url").distinct()
results = []
for img in images:
pbis = product.objects.filter(collection_name__in=collectionname, image_url=img['image_url'])
obj = {"image": img['image_url'], "items":[{"type":pbi.type} for pbi in pbis]}
results.append(obj)
mabe this logic can help you, i am not sure but you can do something like this:
images = product.objects.filter(collection_name=name).values("image_url").distinct()
results = []
for img in images:
pbis = product.objects.filter(collection_name=name, image_url=img['image_url'])###this get all record tha contains this image
obj = {"image": img['image_url'], "items":[{"attr":pbi.attr, ...} for pbi in pbis]}
results.append(obj)
###this iterate all record by images and you can store items attribute from all recors that contains that image
You need tell to django what field you want distinct, you can use values to do that:
in your case your answer can seen like this:
products = product.objects.filter(collection_name=name).values("image_url").distinct()

Django multi table on same model

I have huge table that needed to be sliced into some smaller table, ex:
campaign_01, campaign_02, ...
While using django queryset with different table name for same model, what I only know to set table name on a model is:
Model._meta.db_table = 'tableXXX'
However this method doesn't work in single shell/request. (only work for first time, but not for the next) -> maybe because it still on same instance?
After the second time we tried to set _meta.db_table = 'tableYYY', it will occur an error "django.db.utils.ProgrammingError: missing FROM-clause entry for table "tableXXX""
I also have tried some suggestion I read for this problem answer like:
class ListingManager(models.Manager):
def get_custom_obj(self, table_name):
self.model._meta.db_table = table_name
return self
class ObjectName(models.Model):
objects = ListingManager()
Try to create an Object manager to get new object, but it not work, it still throw same error as before (on the second time setting _meta.db_table)
The only way to make it work if we want to set multiple times for _meta.db_table is we need to exit() the shell first, then re-enter the shell mode (which means for loop is not gonna work).
I know it can be achieved with raw query 'Insert into tableXXX values ()', but any method to do it using django queryset? Thanks~
Consider creating a wrapper model.
class Model1(models.Model):
# fields...
name = ...
age = ...
class Model2(models.Model):
# fields...
height = ...
weight = ...
class ModelAll(models.Model):
model1 = models.OneToOneField(Model1)
model2 = models.OneToOneField(Model2)
But if you're only doing this for organization, just break the fields up with white space.
This will result in the following tables:
Model1
id | name | age
------------------
1 | "Joe" | 21
Model2
id | height | weight
----------------------
1 | 5.85 | 175
2 | 6.0 | 210
ModelAll
id | model1_id | model2_id
----------------------------
1 | 1 | 2
To access sub model fields:
modelall = ModelAll.objects.get(...)
modelall_name = modelall.model1.name
modelall_height = modelall.model2.height

Django - How to Populate Select Data Dynamically in Admin Panel

I want to add functionality to my application that is similar to what is shown below,
Teachers - Table (Teacher | Institute):
1. Teacher 1 | ABC School
2. Teacher 2 | XYZ School
Department Table (Department | Institute):
1. Computers | ABC School
2. History | XYZ School
When I want to add a student to the system, I should be able to add him to a department in a particular school. If I use ForeignKey() then all the departments and schools are listed in drop-downs. This could lead to incorrect insertion of records. I want to dynamically load the departments after and only after the school has been selected in the admin panel. I tried many things but couldn't get it to work. I am fairly new to Django and would appreciate any help that I can get in this regard.
I found a very useful library called django_smart_selects that allowed me to do exactly what I wanted.
https://github.com/digi604/django-smart-selects

Django - storing sortable search results

I have a search function looking for the nearest landmarks based on the user's entered location and radius from location. I want the search results to be able to sort by distance from user's location or by some other metrics I determine. The metrics will come from various tables in my database, but the distance will not because it depends on what the user enters.
I was wondering what is the best way to store all these different sortable values temporarily?
Here's an example of the results
Landmark | Distance | Metric1 | Metric2
-------------------------------------------------
Mark1 | 24 | 2 | 3
Mark2 | 13 | 4 | 5
Mark3 | 4 | 6 | 8
Landmark, Metric1, and Metric2 will all come from a database. Distance will be generated at the search results page. Distance, Metric1, and Metric2 will be sortable.
I'm not sure what kind of storing you need, but if you only want it temporarily that seems like you may want to use a cache. We use Django for our project and use Redis as a cache backend. There are several projects that make it easy to integrate, we use:
https://pypi.python.org/pypi/django-cacheops/0.8.1

Need Modeling Help For An Ordering Form

I'd like to create a Django project for my company's purchasing department. This would be my first project in Django, so sorry if this comes off as rudimentary. The workflow would look something like this:
user registers for an account > signs in > can create, edit, view, or delete a purchase order.
I'm getting tripped up on the modeling. Presumably I can create and authenticate users using django.contrib.auth. Also, since this is mainly a form saving/printing application I would use a ModelForm to generate my forms based on my models since the users will be making changes to the form data that will need to be saved. A simplified version of the purchase order form in question looks something like this:
| Vendor | Date | Lead Time | Arrival Date | Buyer_Name |
+--------+-------+-----------+--------------+------------+
| FooBar |1-1-12 | 30 | 2-1-12 | Mr. Bar |
+--------+-------+-----------+--------------+------------+
+--------+-------+-----------+--------------+------------+
| SKU | Description | Quantity | Price | Dimensions |
+--------+-------------+----------+-------+--------------+
|12345 | Soft Bar | 38 | 5.75 | 16 X 5 X 8 |
+--------+-------------+----------+-------+--------------+
|12346 | Hard Bar | 12 | 5.75 | 16 X 5 X 8 |
+--------+-------------+----------+-------+--------------+
|12347 | Medium Bar | 17 | 5.75 | 16 X 5 X 8 |
+--------+-------------+----------+-------+--------------+
As you can see, the main purchase order form has a header that identifies the Vendor being ordered from, the current date, lead time, arrival date, and the buyer's name who is filling the form out. Under that is a line-by-line order detail for three different SKUs. Ideally, each PurchaseOrder should be able to have many SKUs added to it.
What is the best way to model something like this? Do I create a User, PurchaseOrder, and SKU model? Then add a FK to the SKU Model that points to the PurchaseOrder Model's PK or is there some other, more correct, way to do something like this? Thanks in advance for any help.
[Edit]
Django had what I was looking for all along. Since this is essentially a nested form, I could make use of Formsets.
Here are two helpful links to get started:
https://docs.djangoproject.com/en/1.4/topics/forms/formsets/
https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#model-formsets
Use django's built in user model (you can look at the source to see the definition but it is similar to the code below for these other models). Other than that I would suggest a model for every object you mentioned.
Don't add a FK to the SKU Model since SKU can exist without being in a purchase order (if I understand the problem correctly).
models.py
from django.contrib.auth.models import User
class Vendor(models.Model):
name = models.CharField(max_length=200)
#other fields
class SKU(models.Model):
description = models.CharField(max_length=200)
#other fields
class PurchaseOrder(models.Model):
purchaser = models.ForiegnKey(User)
name = models.CharField(max_length=200)
skus = models.ManyToManyField(SKU) #this is the magic that allows 1 purchase order to be filled with several SKUs
#other fields